我们很多同学都苦恼与双目运算符的计算,不知道具体的结合方法。
双目运算符中逻辑并运算&&的优先级高于逻辑或运算||。
下面是我具体说一下截断。
上图代码中,++自增运算是先进行自身加运算再取数进行逻辑运算。
a进行++a运算后成了a,很多人疑惑为什么a+b=3,而不是4,按道理b的值应该也是2,++b也进行了自增运算。这就是进行了截断,因为我们进行的是双目运算是从左到右进行结合,我们先进行处理是是++a||,已知a是2的情况下,不论后面是不是真值,我们都确定此结果为真,此时进行截断。
有的人问,&&的优先级不是高于||的优先级,也可以说是短路运算:&&的优先级高于||,但运算符的优先级与系统进行表达式运算的顺序没有必然的关系,比如表达式A||B&&C,由于&&优先级高于||,所以等效于A||(B&&C),但是系统会先对表达式中的A进行判断,若A的值为非零值(真),则由于逻辑运算符的短路效应,后面的表达式B&&C就不再判断;反之则继续进行表达式B&&C的判断。
从上面可以看到--a后,a的值已经为零所以,我们进行截断,即只对a进行计算完之后计算机系统不再对b进行计算处理。这是&&的截断情况。但是我们没有办法直接确定我们的真值结果例如下面的情况:
我们看到代码。此时a的值为零但是,后面++c使得我们的真值最后变成了1。截断仅用于计算变量。