C语言编程-经典易错题1
#include<stdio.h>
int main(int argc, char const *argv[])
{
unsigned int a=6;int b=-20;
(a+b>6)?puts("a>6"):puts("a<=6");
return 0;
}
这无符号整型问题的答案是输出是 >6
这个问题是考察C语言中整数自动转换原则。
具体原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了正整数,所以该表达式计算出的结果大于6。