真正了解&&和||

来源:互联网 发布:seo网站结构分析工具 编辑:程序博客网 时间:2024/05/19 00:36

最近看到各大牛说了一些各大公司的面试题,其中看到一个涉及的,查了一些资料,自己有搞了一搞,才发现当初学C语言时并没有真正掌握到,故写下此文。


int main(){    0 && printf("1, run!\n");    1 && printf("2, run!\n");    0 || printf("3, run!\n");    1 || printf("4, run!\n");}

这段代码运行结果是:

2, run!

3, run! 

  

分析:当a&&b时,若a为false,则不用运行b,若a为true,则要检验b是否为true;

当a||b时,若a为true,则不用运行b,若a为false,则要检验b是否为true;


int main(){    1||printf("2\n")&&printf("3\n");    0||printf("4\n")&&printf("5\n");}

运行结果为

4

5

分析:a||b&&c,当a为true时,就可以略过b和c;

当a为false时,根据上面的依次判断b和c。



int main(){    1&&printf("2\n")||printf("3\n");    0&&printf("4\n")||printf("5\n");}

运行结果为:

2

5


分析:a&&b||c,当a为true时,要判断b,此时有两种情况:

b为true,则不用判断c,因为a&&b=true,即true||c,略过c。

b为false,则判断c,因为a&&b=false,即false||c,故要判断C。

当a为false时,则直接略过b,直接判断C。(这个很容易会错!!)













0 0
原创粉丝点击