【发布时间】:2013-10-18 14:17:14
【问题描述】:
我有一个来自学校的测试示例问题。在纸上解决问题,哪种方法最简单?
问题:
运行时系统使用二进制补码来表示整数。数据类型 int 大小为 32 位,数据类型 short 大小为 16 位。 printf 显示了什么?(答案是ffffe43c)
short int x = -0x1bc4; /* !!! short */
printf ( "%x", x );
【问题讨论】:
-
这应该是未定义的行为,因为您将
short输入到%x中,这是一种类型不匹配。 -
@Dan 参数传递自动提升为
int,带有符号扩展。由于指定了整数的负表示,我不认为它是未定义的。 -
哦,好吧,那我就买那个解释了。
-
请不要在标题中添加“[已解决]”或其他类似内容。如果其中一个答案对您有用,请考虑 accepting it,这是我们在此处将问题标记为已回答的方式。