您的位置:首页 > 其它

真正了解&&和||

2016-04-27 20:14 218 查看
最近看到各大牛说了一些各大公司的面试题,其中看到一个涉及的,查了一些资料,自己有搞了一搞,才发现当初学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。(这个很容易会错!!)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: