此代码示例来自http://www.cplusplus.com/doc/tutorial/templates/:
template <class myType>
myType GetMax (myType a, myType b) {
return (a>b?a:b);
}
我感到困惑的是正在返回的代码的“a>b?a:b”部分。有人可以帮助我了解这里发生了什么吗?谢谢。
此代码示例来自http://www.cplusplus.com/doc/tutorial/templates/:
template <class myType>
myType GetMax (myType a, myType b) {
return (a>b?a:b);
}
我感到困惑的是正在返回的代码的“a>b?a:b”部分。有人可以帮助我了解这里发生了什么吗?谢谢。
这是三元运算符。它计算 之前的表达式?
,如果为真,:
则返回之前的值。否则,返回后面的值:
。
它基本上是表达以下 if/else 语句的简洁方式:
if ( a>b)
{
return a;
}
else
{
return b;
}
它被称为三元运算符:
http://www.cplusplus.com/articles/1AUq5Di1/
你可以认为return (a > b) ? a : b;
是:
if(a>b) {
return a;
} else {
return b;
}
Keep in mind that the ternary operator actually produces a value, which is either a or b (which is why it works in the return
statement).
So you can do things like
myType c = (a>b) ? a : b
, which is roughly equivalent to
myType c;
if(a > b) {
c = a;
} else {
c = b;
}