为什么if语句返回true?

时间:2015-03-05 14:56:44

标签: c embedded

高级C问题:为什么如果返回true?

unsigned int i = 8; 
int j = -16;
    if(i+j > 5){
        printf(">5 = %d\n",i+j);
    }else{
        printf("<5 = %d\n",i+j);
    }

1 个答案:

答案 0 :(得分:1)

当使用signed int操作unsigned int时,它会转换为unsigned int。由于-16无法表示为unsigned int,因此可以将unsigned intUINT_MAX)表示的最大值添加到-16