可能重复:
unsigned int and signed char comparison关于产品在C unsigned int类型
int j = 10;
unsigned int i = 10;
if(j > -1)
printf("1\n");
else
printf("2\n");
if(i > -1)
printf("3\n");
else
printf("4\n");
输出是:
1
4
我已经追查到组件和比较类似:
cmp dword ptr [ebp-10h],0FFFFFFFFh
...
cmp dword ptr [ebp-14h],0FFFFFFFFh
但仍不明白为什么一个是真的,另一个是假的。
IMO的CPU不知道dword ptr
是否签署。
那么它是如何工作的?
UPDATE
任何人都可以在装配水平解释一下吗?
OP的问题与建议的重复不同。请不要关闭。 – 2011-05-28 16:03:51
这不应该被关闭。这个问题是关于x86汇编程序。 – 2011-06-01 01:06:11