c++ - C++ auto 推断的类型
问题描述
C++ 如何在循环auto
的情况下推断数据类型for
- 从初始化还是从条件?
long long n;
cin>>n;
for(auto i=1; i<=n; i++)
cout << ((i * i) * ((i * i) - 1)) / 2 - 2 * (2 * (i - 1) * (i - 2)) << "\n";
在这里,将i
是一个整数long long
?我的代码在我使用时失败(可能是由于溢出 - 输出中的负值,n = 10000),当我使用auto
时通过了long long
。
解决方案
对于更简单的陈述
auto i = 1;
很明显这i
是一个int
类型,因为它是一个类型1
的文字int
。这延续到for
循环内的声明。C++ 是非常自洽的。
停止条件 的类型i <= n
是 a bool
,因此对您没有多大用处。
如果您希望索引类型与 相同n
,请使用
for (decltype(n) i = 1;
在循环的开始。
推荐阅读
- python - 在面和 OBJ 文件的相应顶点之间建立链接
- amazon-web-services - S3 中的静态网站以私下访问 EC2 后端 API
- javascript - React - 加载资源失败:服务器响应状态为 400(错误请求)
- aspect-ratio - IDL 中使用 Scale3 的纵横比
- php - Array map, flatten and merge PHP
- types - 运行过滤器功能时出现“类型”错误
- python - 使用 python 代码处理 yahoo Finance api 限制
- oracle - 如果结果集中不存在,则使用 Oracle 模型子句向结果集中添加一行
- azure - Spark Delta Table 在中间 Schema Evolution 中添加新列
- r - 尝试从 R(Windows 10 和 Git Bash)运行脚本时出现“找不到命令”错误