以下は簡単な 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 組の括弧は必要ありません。この質問もチェックしてください。