質問: 1; ++x || ++y && ++z; printf("x=%d\ty=%d\tz=%d\n", x, y, z); ``` 答えは x=2 , y=1 , z=1 です. ### 疑問 * ||よりも&&のほうが演算子の優先順位が高いので,++y && ++zから計算しますよね? * そして,インクリメント演算子が変数の前についているので先に計算してy=2,z=2という考えではだめなのでしょうか? * また,論理演算子は条件文とセットで使われるものを多く見かけるのですが,上記の問題では論理演算子のみです.この場合変数及び式にはどのような処理がなされているのでしょうか? 以上,ご教示よろしくお願いいたします.
回答: ``` ++x || ++y && ++z; ``` これは、++x から演算します。 その結果は 2 となり、true となるので || の右辺は計算されません。