0

此代码示例来自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”部分。有人可以帮助我了解这里发生了什么吗?谢谢。

4

2 回答 2

1

这是三元运算符。它计算 之前的表达式?,如果为真,:则返回之前的值。否则,返回后面的值:

它基本上是表达以下 if/else 语句的简洁方式:

if ( a>b)
{
    return a;
}
else
{
    return b;
}
于 2013-03-30T07:02:17.567 回答
1

它被称为三元运算符:

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;
}
于 2013-03-30T07:03:21.383 回答