目前正试图让我的头脑围绕 C++11 并且刚刚发现了 auto 关键字。
我想知道使用 auto 它会默认给定特定值的类型。
例如,整数值为 65535,会默认为 unsigned int、signed int、unsigned short 等吗?还是它只是保持自动而不需要默认任何东西?
任何帮助表示赞赏
它不会“默认”任何东西。65535
是int
,根据定义,在这种情况下auto
也是int
如此。例如,如果你做了65535L
,那么它就是一个long
,并且auto
会是一个long
。
请注意,以上考虑的是“典型”系统。如果对于(可能是因为在这个其他系统上是 16 位)65535
来说太大,编译器会给它一个更大的类型,以便它“适合”到它自己的数据类型,(在这种情况下,),在这种情况下变成. 关于整数文字类型的确切规则在标准的第 2.14.2 节中给出(感谢 Benjamin Lindley 和 James Kanze)。但是,要记住的重要部分是,对于某物的类型,有特定的、明确的规则,因此永远不必猜测或“默认”任何东西。int
int
65535
long
auto
long
auto