[英]Is declaring a variable with auto and initializing with a primitive literal defined behaviour?
如果我使用原始文字初始化使用auto声明的变量,则是否定义了结果,例如
auto i = 6; // Is this always going to evaluate to a int?
// Or could it evaluate to some similar type like short?
整数文字6
的类型为int ,您可以在此处检查。
然后,从cppreference.com :
对于变量, auto指定将从其初始值设定项自动推断出要声明的变量的类型。
所以i
将具有int类型,因为6
具有int类型。
这种行为是绝对定义良好的。
是的,这正是auto
的用途。
例如, auto i;
没道理 编译器使用6
推断类型。 而6
是整数文字。
是的,因为每个文字都有明确定义的类型。 文字6
的类型为int
。 因此,您的auto
将被转换为int
。
如果int
是16或32位长,则定义实现,但这不会产生不确定的行为,因为程序中每个简单的int
都具有相同的长度。 除此之外,无论根据您的体系结构int
的长度如何,6都是int
,而不是short
或long
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.