由C++自动推断的类型
auto在for循环的情况下,C++ 是如何推断数据类型的——从初始化还是从条件?
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是 type 的文字int。这会延续到for循环内的声明。C++ 是非常自洽的。
停止条件 的类型i <= n是 a ,bool因此对您没有多大用处。
如果您希望索引类型与 相同n,则使用
for (decltype(n) i = 1;
在循环的开始。