待到秋来九月八,我花开尽百花杀
首先我们来看一道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,也就是说当有一个条件为假,则整体条件为假,那么为了提高计算的效率,那么只要&&左边为假,就没有必要继续运算后面的程序,直接进入下一个语句。
同理 || 是逻辑或,当左右两个条件只要满足一个为真,则整体为真,那么为了提高计算效率,那么只要||左边为真,就没有必要继续运算后面的程序,直接进入下一个语句。