三元操作符?: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