2016-08-11 6 views
3

Ubuntuのstd :: maxの実装では、なぜ三者演算ではなくif文を使用するのか混乱しています。コメントには三項演算があります(一度そのように見え、変更されたように見えます)。ここにif-elseを使用する理由を明記してください。std :: maxの実装でif-elseを使用する理由

template<typename _Tp> 
inline const _Tp& 
max(const _Tp& __a, const _Tp& __b) 
{ 
    // concept requirements 
    __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) 
    //return __a < __b ? __b : __a; 
    if (__a < __b) 
    return __b; 
    return __a; 
} 
+1

'?'ではなく、 '' if''と '' else''を使う特別な理由はありません。いずれにせよ、他の方法には関係しないでしょう。コメントをコードと矛盾させることは、明らかに少し不快なものです。 –

答えて

2

私は、「コンパイラのオブジェクト・コード・ジェネレータは、のいずれか人間構文の代替を通じ取得するときに、」それは全く違いはありませんだろう、ということあえて。

「コンパイル」の通常の処理では、「あなたの意図」は一連の基本操作に縮小され、(最適化後...)実行可能コードに変換されます。  この場合のように、「ソースコードでそれを言ういくつかの方法がある」場合、それらはたいてい1つに縮小されます。

関連する問題