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

发布于 2022-09-04 07:01:27 字数 345 浏览 24 评论 0

题目:
3.10复习题第4题

答案:
复习题第4题答案

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

空袭的梦i 2022-09-11 07:01:27

根据 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进制的类型是最小能表示该字面量值的类型,我不清楚你看的书是什么版本的,所以也不好说是不是的印刷错误,或者没来得及根据标准修订

落花浅忆 2022-09-11 07:01:27

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

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

狠疯拽 2022-09-11 07:01:27

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文