【C语言】逻辑运算短路

短路运算符:&&、||        逻辑与、逻辑或

短路原则:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。

短路运算的规则:

(1)a&&b&&c。只有a为真(非0),才需要判别b的值。只有当a和b都为真的情况下,才需要判别c的值。如果a为假,无需判别b和c的值。如果a为真、b为假,无需判别c的值。

(2)a||b||c。只要a为真(非0),不必判断b和c。只有a为假,才判别b。a和b都为假,才判别c。

运算符 含义 举例 说明
&& 逻辑与 a&&b

如果a和b都为真,则结果为真,否则为假。

(那么a为假,可直接判定a&&b为假)

|| 逻辑或 a||b

如果a和b有一个为真,则结果为真;两者都为假时,结果才为假。

(那么a为真,可直接判定a||b为真)


示例:

 例1:已知 A=7.5,B=2,C=3.6,表达式 A>B&&C>A||AB 的值是___0___。

运算符优先级(高——>低) 结合律
> 从左往右
&&、||、! 从左往右

解答:A>B=1,C>A=0                        ——>        A>B&&C>A=0

           A>B&&C>A=0,A        A>B&&C>A||A

           A>B&&C>A||A        A>B&&C>A||A&&!C>B=0

                            &&左边为假,可直接判定表达式为假,无需判别右边表达式!C>B为真为假

 例2:int x=1,y=0,z=2,表达式 y++ && ++z || ++x 的值是__1___。

运算符优先级(高——>低) 结合律
++ 从右往左
&&、|| 从左往右

解答:y++=0                                        ——>y++ && ++z=0,逻辑计算短路

           y++ && ++z =0,++x=2(非0)——>y++ && ++z || ++x=1

例3: 若有定义语句:“int k1=10, k2=20;”,则执行表达式“(k1=k1>k2) && (k2=k2>k1)” 之后,k1和k2的值分别是( )。

运算符优先级(高——>低) 结合律
() 从左往右
> 从左往右
&& 从左往右
= 从右往左

解答:表达式整体的计算是从左至右

先计算(k1=k1>k2):k1>k2=0,k1=0       ——>(k1=k1>k2) && (k2=k2>k1)=0,逻辑计算短路

∴k1=0,k2=20

你可能感兴趣的:(C语言-学习小记,C语言,c语言)