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;
很明显 i
是 int
类型,因为 1
是 int
类型的文字。这延续到 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
。
在 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;
很明显 i
是 int
类型,因为 1
是 int
类型的文字。这延续到 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
。