这个问题的输出结果是什么

#include

int main(int argc, char const *argv[])
{
unsigned int i = 5;
int j = -10;
if((i + j)>0)
{
printf("i + j > 0\n");
}
else
printf("i + j < 0\n");
return 0;
}

结果是啥不会自己跑一把??? 就是个类型隐式转换的问题。

你这个是发生了类型转换,因为i为无符号整型,所以如果不改成这样的话——if((int) (i + j)>0),i+j的最终结果也会转换为unsigned类型,这样就恒大于0,所以就导致输出错误结果