C Primer Plus中为什么说0XAA的数据类型是unsigned int呢?

题目:
3.10复习题第4题

答案:
复习题第4题答案

其中d题,我的回答是int整型常量,用16进制格式表示,为什么答案是unsigned int呢?

回答:

根据 C11/C99 §6.4.4.1/5

The type of an integer constant is the first of the corresponding list in which its value can be represented.

这句话下面有一个表,想看就去看标准文档了。。
也就是说,16进制的类型是最小能表示该字面量值的类型,我不清楚你看的书是什么版本的,所以也不好说是不是的印刷错误,或者没来得及根据标准修订

回答:

感觉只是一个约定吧,八进制或者十六进制表示全都看作是无符号整型。

单纯从0XAA上是无法看出有没有符号的,因为完全可以int a = 0xaa;

回答:

这本书(第5版中文版)的P41页有说明"八进制和十六进制常量通常看做int类型",但是P40页也有说明优先选择unsigned类型而不是int类型.所以,书中的答案给出的是unsigned int类型.

以上是 C Primer Plus中为什么说0XAA的数据类型是unsigned int呢? 的全部内容, 来源链接: utcz.com/p/195454.html

回到顶部