运行下面代码,输出的结果是:
#include <stdio.h>
int main () {
unsigned int a = 6;
int b = -20;
unsigned int c = a+b;
(a + b > 6) ? printf(">6") : printf("<=6");
//printf("%u\n", c);
return 0;
}
答案: > 6
有符号数和无符号数进行比较运算时(==,<,>,<=,>=),有符号数隐式转换成了无符号数(即底层的补码不变,但是此数从有符号数变成了无符号数),比如上面 (a+b)>0这个比较运算。此数进行比较运算时,被当成了无符号数,它大于0,所以得到上述结果。