作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
这是一个简单的 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
吗?谢谢。
最佳答案
由于运算符优先级,表达式解析如下:
(x1<=x2 ? minx=x1,maxx=x2 : minx=x2), maxx=x1;
你可以解决这个问题:
(x1<=x2) ? (minx=x1,maxx=x2) : (minx=x2, maxx=x1);
实际上你不需要前两对括号。 Also check this question .
关于c++ - 从 x?y :z expression 得到了意想不到的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629163/
我是一名优秀的程序员,十分优秀!