このコード例は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;
}
三項演算子は実際には a または b のいずれかの値を生成することに注意してください (これがreturn
ステートメントで機能する理由です)。
だからあなたは次のようなことができます
myType c = (a>b) ? a : b
、これはほぼ
myType c;
if(a > b) {
c = a;
} else {
c = b;
}