C++ auto 推断的类型

Type inferred by C++ auto

for 循环的情况下,C++ 的 auto 如何推断数据类型 - 从初始化还是从条件?

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的整数吗?当我使用 auto 时,我的代码失败(可能是由于溢出 - 输出中的负值,n = 10000),而当我使用 long long.

时,我的代码通过了

更简单的说法

auto i = 1;

很明显 iint 类型,因为 1int 类型的文字。这延续到 for 循环内的声明。 C++ 非常自洽。

停止条件i <= n的类型是bool所以不会 对你很有用。

如果希望索引类型与n相同,则使用

for (decltype(n) i = 1;

在循环开始时。

How does C++'s auto infer data types in case of for loops

与所有推导变量相同:来自初始化器。

Here, will i be a integer of long long?

它将是int