How can I determine the largest number among three numbers using C++?
I need to simplify this
w=(z>((x>y)?x:y)?z:((x>y)?x:y));
Use the simple if
condition
int w = x;
if(y > w)
w = y;
if(z > w)
w = z;
Where w
is the max among three.
big = a > b ? (a > c ? a : c) : (b > c ? b : c) ;
A variant on oisyn's answer (use an initializer list) and Bathesheba's answer (invoke no copies) is to use std::ref to create an initializer list of references, and then use std::max
normally:
using std::ref;
w = std::max({ref(x), ref(y), ref(z)});
This is only advantageous if creating a reference is cheaper than creating a copy (and it isn't for primitives like int
)
Starting from C++11, you can do
w = std::max({ x, y, z });
w = std::max(std::max(x, y), z);
is one way.