カンマ付きの三項演算子が真の場合に1つの式しか評価しないのはなぜですか?
私は現在、C ++ Primerという本を使ってC ++を学んでいます。本の演習の1つは次のとおりです。 次の式の意味を説明してください。 someValue ? ++x, ++y : --x, --y 私たちは何を知っていますか?三項演算子はコンマ演算子よりも優先順位が高いことがわかっています。2項演算子を使用すると、これは非常に簡単に理解できましたが、3項演算子を使用すると、少し苦労します。二項演算子で「優先順位が高い」とは、式の前後に優先順位の高い括弧を使用できることを意味し、実行は変更されません。 三項演算子の場合は、次のようにします。 (someValue ? ++x, ++y : --x, --y) コンパイラーがコードをグループ化する方法を理解するのに私を助けない同じコードを効果的にもたらします。 ただし、C ++コンパイラでのテストから、式がコンパイル:されることがわかり、演算子自体が何を表すことができるかわかりません。したがって、コンパイラーは三項演算子を正しく解釈するようです。 次に、2つの方法でプログラムを実行しました。 #include <iostream> int main() { bool someValue = true; int x = 10, y = 10; someValue ? ++x, ++y : --x, --y; std::cout << …