探究 && 和 || 的逻辑实质

待到秋来九月八,我花开尽百花杀

首先我们来看一道360公司的面试题目:

#include<stdio.h>
int main()
{
    
    
   int i = 0,a = 0,b = 2,c = 3,d = 4;
   i = a++ && ++b && d++;
   printf("a = %d\n b = %d\n c = %d\n d = %d\n",a,b,c,d);
   return 0;
}
//程序输出的结果是什么?

是否第一时间思考时,会认为答案是1,3,3,5呢?
我们来看看正确答案:
在这里插入图片描述
造成这样的误会是与计算机在计算 && 和 || 的机制有关。
&& 是逻辑与,当左右两个条件同时满足时才是true,也就是说当有一个条件为假,则整体条件为假,那么为了提高计算的效率,那么只要&&左边为假,就没有必要继续运算后面的程序,直接进入下一个语句。
同理 || 是逻辑或,当左右两个条件只要满足一个为真,则整体为真,那么为了提高计算效率,那么只要||左边为真,就没有必要继续运算后面的程序,直接进入下一个语句。

猜你喜欢

转载自blog.csdn.net/qq_40893595/article/details/104424142