确切地说,C语言判断中if(x==0)和if(!x)有什么本质上的区别吗?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 11:49:02

确切地说,C语言判断中if(x==0)和if(!x)有什么本质上的区别吗?
确切地说,C语言判断中if(x==0)和if(!x)有什么本质上的区别吗?

确切地说,C语言判断中if(x==0)和if(!x)有什么本质上的区别吗?
两者区别不大,“x==0”是个判断语句,很显然,“x==0”成立,这个语句就为真,结果为true;
而“!x”呢,如果“x==0”,那么“!x”就为真,结果为true,反之,这位假,就是false(!x为0);所以,两者都是x为0则判断为真,没什么本质区别的,如果lz非要区别的话,可以这样认为,“x==0”是直接将x与0比较的,真假立判;而“!x”先判断x是否为0,那么就可以得出(!x)是否为0,可以这样分if(x==0) 则((!x)!=0) return true;if(x!=0) 则((!x)==0) return false;这里其实就是boolean与int的一点联系,lz知道,false与0等同,true与1等同,而在二进制内存中,false是全0的,不全0就是true,这就是!x(x是非boolean型吧)可以作为判断(即结果是boolean型)的原因了.
解释这么多,希望对lz有帮助,
lz别忘记给分!