x?y:z式から予期しない回答が得られました 質問する

x?y:z式から予期しない回答が得られました 質問する

以下は簡単な C++ スニペットです:

int x1 = 10, x2 = 20, y1 = 132, y2 = 12, minx, miny, maxx, maxy;
x1 <= x2 ? minx = x1, maxx = x2 : minx = x2, maxx = x1;
y1 <= y2 ? miny = y1, maxy = y2 : miny = y2, maxy = y1;
cout << "minx=" << minx << "\n";
cout << "maxx=" << maxx << "\n";
cout << "miny=" << miny << "\n";
cout <<" maxy=" << maxy << "\n";

結果は次のようになるはずだと思いました:

minx=10
maxx=20
miny=12
maxy=132

しかし実際の結果は次のとおりです。

minx=10
maxx=10
miny=12
maxy=132

maxxなぜそうではないのか誰か説明してもらえますか20? ありがとうございます。

ベストアンサー1

演算子の優先順位により、式は次のように解析されます。

(x1<=x2 ? minx=x1,maxx=x2 : minx=x2), maxx=x1;

これを次のように解決できます:

(x1<=x2) ? (minx=x1,maxx=x2) : (minx=x2, maxx=x1);

実際のところ、最初の 2 組の括弧は必要ありません。この質問もチェックしてください

おすすめ記事