C Primer Plus中为什么说0XAA的数据类型是unsigned int呢?
题目:
答案:
其中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