C ++プログラミングにおける&&および||の優先順位

再版https://zhidao.baidu.com/question/426219427238900292.html

質問:

このプログラムでは、なぜ(++ y)&&(++ x)を最初に実行しないのですか?プログラムは最初にx> yを判断し、次に式の後の部分が短絡されます。&&は||よりも優先されません 説明する方法。

応答:

C / C ++論理判定では、短絡効果
A || B があります。Aが論理的に真の場合、式全体の値が真であると判断でき、Bは
A && Bを実行しません。Aが論理的に偽の場合式全体の値が偽であると判定できる場合は、Bは実行されず、
x> yが真であるため、次の(++ y)&&(++ x)は実行されません。

尋ねる

当&&和||同时存在的时候,即 A || B && C 的时候,为什么不是先计算B&&C?

ファローアップ

如果A已经是逻辑真,就没必要再计算B&&C了。虽然&&的优先级比||高,用括号括起来看是这样:(A) || (B && C),
A和B&&C是同等优先运行的表达式,按照从左至右的运行规则,先计算A,发现A为逻辑真后,B&&C就不执行了。

 

优先级高只是结合(律)的问题(即括号怎么放的问题),但不是计算的先后顺序。

おすすめ

転載: blog.csdn.net/hbhhhxs/article/details/104978987