如何使用C ++确定三个数字中的最大数字?
我需要简化这个
w=(z>((x>y)?x:y)?z:((x>y)?x:y));
条件不会简化这一点。
答案 0 :(得分:18)
从C ++ 11开始,你可以做到
w = std::max({ x, y, z });
答案 1 :(得分:8)
w = std::max(std::max(x, y), z);
是一种方式。
答案 2 :(得分:2)
big = a> b? (a> c?a:c):( b> c?b:c);
答案 3 :(得分:0)
使用简单的if
条件
int w = x;
if(y > w)
w = y;
if(z > w)
w = z;
其中w
是三者之中的最大值。
答案 4 :(得分:0)
oisyn's answer上的变体(使用初始化列表)和Bathesheba's answer(不调用副本)是使用std::ref
创建引用的初始化列表,然后使用{{1通常:
std::max
如果创建引用比创建副本便宜(并且不适用于using std::ref;
w = std::max({ref(x), ref(y), ref(z)});
这样的原语),这是有利的。