逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要以下三个运算符:
! :逻辑取反运算符(改变单个表达式的真假)
&& :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
|| :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)
逻辑取反运算符:
当我们设置一个变量example为0时,由于在c语言中,0代表假,1代表真,所以example自然也代表假,把它放在条件语句if中作为if的判断条件时,if语句就不会执行,但当我们用了逻辑取反运算符!加在example前时,“!example”就代表了真,使语句执行:
如果 example 为真, !example 就是假,如果 所以上⾯的代码的意思就是 example为假, !example 就是真。
与运算符:
&& 就是与运算符,也是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是a&&b,&& 两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。
例如:
或运算符:
|| 就是或运算符,也就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。
短路:
值得一提的是,C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值。
如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
例:
大家可以想一下最终结果会是什么?
i为什么等于0呢?b和d的值为什么没有发生变化呢?
原因就在于&&发生了短路。
a++代表先使用a,再对a加1,那么对于&&语句来说,a就是0,有0即全部为假,所以后面的++b,d++都不会再执行了,所以a的值变成了1,b和d还是2,4。整个语句为假,那么返回的就是0,因此i也等于0
当a++变为++a时,整个语句就都执行了一遍,结果自然也就不再相同:
这就是今天的逻辑操作符的小内容了,希望对各位有用