可能是重复问题:
无符号整数和有符号字符的比较
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
但仍然不理解为什么一个为真,另一个为假。
我认为CPU并不知道 dword ptr
是否带符号。
那么它在底层是如何工作的呢?
更新
有人能够用汇编语言来解释吗?