高级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);
}
答案 0 :(得分:1)
当使用signed int
操作unsigned int
时,它会转换为unsigned int
。由于-16
无法表示为unsigned int
,因此可以将unsigned int
(UINT_MAX
)表示的最大值添加到-16
。