2

目前正试图让我的头脑围绕 C++11 并且刚刚发现了 auto 关键字。

我想知道使用 auto 它会默认给定特定值的类型。

例如,整数值为 65535,会默认为 unsigned int、signed int、unsigned short 等吗?还是它只是保持自动而不需要默认任何东西?

任何帮助表示赞赏

4

1 回答 1

12

它不会“默认”任何东西。65535int,根据定义,在这种情况下auto也是int如此。例如,如果你做了65535L,那么它就是一个long,并且auto会是一个long

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

于 2012-11-16T15:40:14.627 回答