考虑到下面的代码片段:
for (auto loopcontrol = 0; loopcontrol < 10; loopcontrol++)
{
...
}loopcontrol的类型是如何推导出来的?
在我使用的C++编译器(MicrosoftVisualStudio2017)上,它是int,但为什么不使用long?
是0的类型吗?
发布于 2018-11-29 14:45:46
auto从初始化表达式(它是初始化器类型的衰变类型)推导变量的类型。在您的示例中,loopcontrol的类型是0的类型。0的类型为int。
发布于 2018-11-30 03:59:36
从文件来看,
对于变量,自动变量的类型将从其初始化器中推导出来。一旦确定了初始化器的类型,编译器就会使用函数调用中的模板参数推导规则来确定替换关键字auto的类型。
对于函数,返回类型将从其返回语句(自C++14)中推导出来。
对于非类型模板参数,类型将从参数(自C++17)推断。
https://stackoverflow.com/questions/53540709
复制相似问题