此代碼示例來自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記住三元運算符實際上會產生一個值,它是a或b(這就是爲什麼它在return
聲明中起作用的原因)。
所以你可以做這樣的事情
myType c = (a>b) ? a : b
,這大致相當於
myType c;
if(a > b) {
c = a;
} else {
c = b;
}
我瞭解檢查,看看是什麼之前,三元運算符是真實的一部分,但爲什麼一個前:? < - (這是一個普通的問號,順便說一句!) – angrytoad
@angrytoad因爲這是你把值返回的地方,如果表達式是真的。 – ApproachingDarknessFish
啊,我明白了。非常感謝! – angrytoad