C Primer Plus中为什么说0XAA的数据类型是unsigned int呢?
题目:
答案:
其中d题,我的回答是int整型常量,用16进制格式表示,为什么答案是unsigned int呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
题目:
答案:
其中d题,我的回答是int整型常量,用16进制格式表示,为什么答案是unsigned int呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
根据
C11/C99 §6.4.4.1/5
这句话下面有一个表,想看就去看标准文档了。。
也就是说,16进制的类型是最小能表示该字面量值的类型,我不清楚你看的书是什么版本的,所以也不好说是不是的印刷错误,或者没来得及根据标准修订
感觉只是一个约定吧,八进制或者十六进制表示全都看作是无符号整型。
单纯从
0XAA
上是无法看出有没有符号的,因为完全可以int a = 0xaa;
。这本书(第5版中文版)的P41页有说明"八进制和十六进制常量通常看做int类型",但是P40页也有说明优先选择unsigned类型而不是int类型.所以,书中的答案给出的是unsigned int类型.