三元操作符?:vs if ... else

在C ++中,?:操作符比if()... else语句更快吗? 它们在编译代码中有什么不同吗?


取决于您的编译器,但在任何现代编译器中通常都没有区别。 这是你不应该担心的。 关注代码的可维护性。


它不是更快。 根据一些表达式初始化一个常量变量时​​有一个区别:

const int x = (a<b) ? b : a;

你不能用if-else来做同样if-else


我已经看到GCC将条件运算符转换为cmov (条件移动)指令,同时将if语句转换为分支,这意味着在我们的例子中,使用条件运算符时代码更快。 但那是几年前,而且很可能今天,都会编译成相同的代码。

不能保证他们会编译成相同的代码。 如果你需要表现,那么一如既往,衡量。 当你测量并发现了1.你的代码太慢了,2.这是罪魁祸首的特定块代码,然后研究编译器生成的汇编代码,并检查自己正在发生的事情。

不要相信黄金法则,例如“如果我使用条件运算符,编译器将始终生成更高效的代码”。

链接地址: http://www.djcxy.com/p/31483.html

上一篇: Ternary operator ?: vs if...else

下一篇: Right align text in android TextView