(C语言)关于||和&&的混合运算

(C语言)关于||和&&的混合运算,第1张

(C语言)关于||和&&的混合运算 首先我们先来看一下运算的规则

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为假时,就已经无法满足逻辑与输出为真的条件,所以后面的表达式就不需要计算了,最后的结果即为假。


运算的优先级

一定要记好一点 && 的优先级是比 || 高的

下面举个对比的例子

#include
void main(){
	int i=1 , j = 0, k = 0, z;
	z =( i++ || j++ )&& k++;
	printf("%dn",z);
}

 输出结果为0

PS:这里加小括号表示让 || 运算先执行。

#include
void 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的值。

但要注意一点:它们是否会参与运算,取决于 || 与 && 的混合运算中,是否已经满足结束整个表达式的条件,满足则不参与运算,不满足则否之。


总结

以上就是今天要讲的内容 ,如果有错误或者疑问,欢迎在评论区中留言,这是我的第一篇文章,讲得不好,还请多多包涵。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5698287.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存