PS:在C语言中非0为true,0为false
逻辑或:表达式1 || 表达式2 || 表达式3...如果表达式1的运算结果为true,则整个表达式的结果为true,同时不会再执行后面的表达式,如果表达式1的运算结果为false,则根据表达式2的运算结果继续判断。
逻辑与:表达式1 && 表达式2 && 表达式3...如果表达式1的运算结果为false,则整个表达式的结果为false,同时不会再执行后面的表达式,如果表达式1的运算结果为true,则根据表达式2的运算结果继续判断。
看上去规则很多,实际上非常好理解。
我们都知道逻辑或是用来判定左右两边的表达式至少有一个为真,才会输出真,否则则为假,当表达式1为真时,就已经满足了逻辑或输出为真的条件,所以后面的表达式就不需要计算了,最后的结果即为真。
而逻辑与则是判定左右两边的表达式全为为真,才会输出真,否则则为假,当表达式1为假时,就已经无法满足逻辑与输出为真的条件,所以后面的表达式就不需要计算了,最后的结果即为假。
运算的优先级
一定要记好一点 && 的优先级是比 || 高的
下面举个对比的例子
#includevoid main(){ int i=1 , j = 0, k = 0, z; z =( i++ || j++ )&& k++; printf("%dn",z); }
输出结果为0
PS:这里加小括号表示让 || 运算先执行。
#includevoid main(){ int i=1 , j = 0, k = 0, z; z = i++ || j++ && k++; printf("%dn",z); }
输出结果为1
所以我们可以得出结论:
i++ || j++ && k++;
实际上是
( i++ ) || ( j++ && k++ );
我们再仔细一看,发现没有,这一串式子可以理解成
表达式1 || 表达式2
没错,这是一个逻辑或的表达式,它依然符合我们上面讲的运算规则,当我们判断表达式1为真时,也就是 i++ 为真时,整个表达式的值也就为真。
规律:在 && 和 || 混合运算时,整个表达式可以看成 || 的表达式,编译器从左向右开始计算&&的表达式,当某个&&表达式为真时,停止计算,整个表达式的值为真
自增、自减
在 || 与 && 的混合运算中,以i为例,我们会遇到i++、i--、++i和--i这样的单目运算,了解它们的朋友就会知道,i++依旧是先判断i的值,再加1;++i是先使i的值加1,再判断i的值。
但要注意一点:它们是否会参与运算,取决于 || 与 && 的混合运算中,是否已经满足结束整个表达式的条件,满足则不参与运算,不满足则否之。
总结
以上就是今天要讲的内容 ,如果有错误或者疑问,欢迎在评论区中留言,这是我的第一篇文章,讲得不好,还请多多包涵。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)