下面定义的整数文字的默认类型是什么:
0X123 /* hex , int ? unsigned int? long? unsigned long? */
0XFFFFFFFE /* hex , value is (2^32-2)=4294967294 .*/
0123 /*octal */ /* value = 83*/
042747672777 /* octal , greater than 2^32*/ /* value=4691293695 */
我在一些教程或书中读过(我不记得来源),默认情况下它们是signed int类型。这是对的吗?
答案 0 :(得分:3)
整数文字的类型定义的是它是十六进制文字,十进制文字还是八进制文字,更多是文字的值。
表6 - 整数常量的类型,在C ++ 11标准的2.14.2节中列出了用于捕获整数文字的类型的顺序。
十进制文字与十六进制和八进制文字之间的主要区别在于十进制文字类型的顺序是int
,long
,long long
,而十六进制和八进制类型的顺序是文字是int
,unsigned int
,long
,unsigned long
,long long
和unsigned long long
。