【发布时间】:2011-09-03 23:08:06
【问题描述】:
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 是否已签名。
那么它在底层是如何工作的呢?
更新
任何人都可以在汇编级别解释它吗?
【问题讨论】:
-
OP 的问题与建议的副本不同。请不要关闭。
-
这不应该被关闭。这个问题是关于 x86 汇编程序的。