看个题:
#include<stdio.h>
int main()
{
unsigned int a=6;
int b=-20;
printf("%d\n",a+b);
(a+b)>6? puts(">6"):puts("<=6");
return 0;
}
结果是:-14 >6
解释:
a+b本身不存在符号问题.
真正的问题是(a+b)>6的比较,6被编译器认为是无符号数.所以>6
如果你用(a+b)>-6,你就会发现是<=6
看个题:
#include<stdio.h>
int main()
{
unsigned int a=6;
int b=-20;
printf("%d\n",a+b);
(a+b)>6? puts(">6"):puts("<=6");
return 0;
}
结果是:-14 >6
解释:
a+b本身不存在符号问题.
真正的问题是(a+b)>6的比较,6被编译器认为是无符号数.所以>6
如果你用(a+b)>-6,你就会发现是<=6