目前正试图了解C ++ 11并刚刚发现了auto关键字。
我想知道使用auto哪种类型默认给定某些值。
例如,如果整数值为65535,那么默认为unsigned int,signed int,unsigned short等吗?或者它只是保持为自动而不需要默认为什么?
感谢任何帮助
答案 0 :(得分:11)
它没有“默认”任何东西。根据定义,65535
是int
,因此在这种情况下auto
为int
。例如,如果您执行了65535L
,那么它就是long
,auto
将是long
。
请注意,上述内容正在考虑“典型”系统。如果65535
对于int
来说太大(可能因为int
在这个其他系统上是16位),编译器会给它一个更大的类型,以便65535
它“适合”自己的数据类型(在本例中为long
),在这种情况下auto
变为long
。有关整数字面类型的确切规则在标准的2.14.2节中给出(感谢Benjamin Lindley和James Kanze)。但要记住的重要部分是,对于某事物的类型有明确的规则,因此auto
永远不必猜测或“默认”任何事物。