我尝试了较旧的帖子,但无法理解以下行为。
https://stackoverflow.com/questions/12295168/c-signed-unsigned-mismatch
unsigned int 和 signed char 比较
#define T long
int main()
{
unsigned T a;
T b;
a=1;
b=-1;
if(a>b)
printf("True\n");
else
printf("False\n");
return 0;
}
我为 T=char、short int 和 long 尝试了上面的代码。
char 和 short 的观察输出为 TRUE,而 int 和 long 的输出为 FALSE。我在 Ubuntu gcc 中尝试了上面的代码。
谁能解释一下,为什么我会为不同的数据类型得到不同的输出?