在C ++中用十六进制或八进制表示的整数文字的默认类型是什么?

时间:2016-08-05 06:39:17

标签: c++

下面定义的整数文字的默认类型是什么:

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类型。这是对的吗?

1 个答案:

答案 0 :(得分:3)

整数文字的类型定义的是它是十六进制文字,十进制文字还是八进制文字,更多是文字的值。

表6 - 整数常量的类型,在C ++ 11标准的2.14.2节中列出了用于捕获整数文字的类型的顺序。

十进制文字与十六进制和八进制文字之间的主要区别在于十进制文字类型的顺序是intlonglong long,而十六进制和八进制类型的顺序是文字是intunsigned intlongunsigned longlong longunsigned long long