在Ubuntu中实现std :: max,我很困惑为什么他们使用if
语句而不是三元语句。三元操作在评论中(所以看起来它曾经是那样并且被改变了)。是否在此处指定使用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;
}
答案 0 :(得分:2)
我敢说,“当编译器的目标代码生成器使用 人类语法替代方案时,”它将无任何区别。
在“编译”的普通过程中,“你的意图”将被简化为一系列原始操作,然后将(优化后......)翻译成可执行代码。如果在这种情况下,“有几种方法可以在源代码中说出来”,那么它们最有可能只减少到一个。