以前一直想当然认为t<=0,那么if(t){}不会执行,今天才发现if把0当作flase,其它全为true。
int main(){
if(-1){
printf("1");
}
if(0){
printf("2");
}
if(1){
printf("3");
}
if(!(-1)){
printf("4");
}
if(!0){
printf("5");
}
if(!1){
printf("6");
}
return 0;
}
结果
135
【C语言种if只区分0与非0】本质上是因为cpu做逻辑计算的时候都是做无符号数拓展,所有数都是当作无符号来看待的。因此if中的负数计算结果实际上是相当于强转成了unsigned int。