我听说编译器非常聪明,并且知道如何优化if / else语句。
我也听说过三元性能很高,因为它们很少通过CPU的指令管道。
让我根据我所听到的内容澄清:
if / else必须通过管道传递其条件并等待结果才能执行结果计算。
然而,三元组可以通过两个结果'计算到cpu而不必等待布尔表达式通过管道。
那么,哪个更快,三元组还是if / else?
答案 0 :(得分:4)
没有性能差异,三元运算符只是一个语法糖。
来自ISO / IEC 9899 C标准(draft, page 90):
6.5.15条件运算符
(...)
<强>语义强>
评估第一个操作数;它之后有一个序列点 评价。仅在第一个操作数进行比较时才评估第二个操作数 不等于0;第三个操作数仅在第一个操作数时进行评估 比较等于0;结果是第二个或第三个的值 操作数(以评估者为准),转换为所描述的类型 下面。 (...)