为什么0XAA是无符号的int而不是int?

莫里斯·李

我看到这个从Ç的Primer Plus,第6版,第3章复习题。

问题:

问题图片

答案在附录A:

回答图片

注意d.0XAA,我的答案是int常量,十六进制格式,但是答案是unsigned int

我不知道为什么

伦丁

那本书是不正确。根据C11 6.4.4.1,从此表确定十六进制整数常量的类型:

Suffix    ...    Octal or Hexadecimal Constant

None      ...    int
                 unsigned int
                 long int
                 unsigned long int
                 long long int
                 unsigned long long int

u or U    ...    unsigned int
                 unsigned long int
                 unsigned long long int

您的常数0xAA没有后缀,因此上表的顶部适用。含义:编译器将首先检查该值是否适合int如果它不适合,它会检查它是否适合于unsigned int等等。

任何已知实施的C,价值0xAA肯定会放不下的int正确答案的问题int

然而,有不断的被0xAAu,所引用的表的底部就申请了,其结果将是一个unsigned int

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

0xaa和0x55在做什么?

为什么默认为“ int”而不是“ byte”?

为什么要在循环中使用foreach而不是for(int i = 0; i <length; i ++)?

为什么强制转换为int给我8而不是0?

在无符号int和有符号int的值范围内,“-1”代表什么?

使用无符号而不是带符号的int更有可能导致错误吗?为什么?

在运行中,为什么用[] int而不是int []?

为什么Realm使用RealmOptional <Int>而不是Int?可选属性?

为什么将unsigned short(乘)无符号short转换为signed int?

为什么Vulkan的VkBool32实现为无符号int?

为什么用C语言为每个带符号的int类型都必须有一个对应的无符号的int类型?

当A为无符号vs有符号时,为什么A / <constant-int>更快?

为什么QByteArray的大小是int而不是unsigned int

为什么std :: assoc_laguerre的第二个参数是无符号的int?

为什么将无符号的“小”整数提升为有符号的int?

为什么要使用“ int input {0};” 而不是“ int intput”;

为什么在许多情况下,无符号类型更合适,BCL为什么对许多方法都使用带符号的int?

是什么导致使用三进制而不是short将此有符号int转换为无符号int的转换?

无符号的int值

C ++中有符号或无符号int

为什么要(“ 0” +“ 1”)。toInt()!返回1作为Int,而不是0

为什么构造Instance <Integer>而不是int

为什么不能通过将其与0进行按位或运算来翻转32位无符号int的位?

为什么我不能将有符号的int转换为无符号的long

为什么返回Task <int>而不是int?(异步并等待)

为什么无符号int右移总是用'1'填充

为什么 type(((),)[0]) 是元组而不是 int?

为什么接口内的 Int 不是 Int?

为什么我可以“无捕获捕获”一个 int 变量,而不是一个非捕获 lambda?