2016-08-11 35 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

我敢說,「當編譯器的對象代碼生成器獲得通過與要麼人類語法選擇,」它將使沒有任何區別。

在「編譯」,「你的意圖」的正常程序將被簡化爲一系列基本的操作,然後將翻譯(優化後的...)成可執行代碼。  如果像在這種情況下那樣,「在源代碼中有幾種方式來表示它們」,它們最有可能被減少到只有一種。

相關問題