首页 > 解决方案 > 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

标签: c++auto

解决方案


对于更简单的陈述

auto i = 1;

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

停止条件 的类型i <= n是 a bool,因此对您没有多大用处。

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

for (decltype(n) i = 1;

在循环的开始。


推荐阅读