1.表达式中有无符号数和有符号数混用的时候
先看一个例子:
int main(void)
{
unsigned int a = 6;
int b = -20
return (a+b) > 0 ? 1 : 0;
}
echo $ 的结果是 1。
首先这两个数在内存中都是以补码形式存储的,
以上面的例子分别为0xffffffec , 0x6。相加后的值也很明显等于fffffff2
可以看一下gcc中反汇编:
0: 8d 4c 24 04 lea 0x4(%esp),