【发布时间】:2013-02-26 17:42:04
【问题描述】:
当我在下面运行程序时,它会输出 109876543210-1-2-3-4-5-6-78-9-10-11-12-和 s0 等。为什么这样?无符号整数是什么概念?
main ()
{
unsigned int i;
for (i = 10; i >= 0; i--)
printf ("%d", i);
}
【问题讨论】:
-
顺便说一句,c 中带符号的 int 和无符号的 int 之间的区别例如在于它进行位移的方式,这实际上意味着它使用的是 sal/sar 还是 shl/shr 指令。否则寄存器中的数字看起来相同。
-
@stupid_idiot,它还影响比较、乘法 (mul/imul)、除法 (div/idiv) 和传播到更大的类型。也许还有别的,不太确定。
-
这个问题没有任何问题,因此不应将其作为“不是一个真正的问题”来关闭。但由于非常基本的性质,也许它“过于本地化”。
标签: c unsigned-integer