关键字自动默认为哪种类型?

时间:2012-11-16 15:38:24

标签: c++ c++11

目前正试图了解C ++ 11并刚刚发现了auto关键字。

我想知道使用auto哪种类型默认给定某些值。

例如,如果整数值为65535,那么默认为unsigned int,signed int,unsigned short等吗?或者它只是保持为自动而不需要默认为什么?

感谢任何帮助

1 个答案:

答案 0 :(得分:11)

它没有“默认”任何东西。根据定义,65535int,因此在这种情况下autoint。例如,如果您执行了65535L,那么它就是longauto将是long

请注意,上述内容正在考虑“典型”系统。如果65535对于int来说太大(可能因为int在这个其他系统上是16位),编译器会给它一个更大的类型,以便65535它“适合”自己的数据类型(在本例中为long),在这种情况下auto变为long。有关整数字面类型的确切规则在标准的2.14.2节中给出(感谢Benjamin Lindley和James Kanze)。但要记住的重要部分是,对于某事物的类型有明确的规则,因此auto永远不必猜测或“默认”任何事物。