在编译期间,三元运算符是否会扩展为if-else块?

时间:2017-05-21 04:47:14

标签: c assembly ternary-operator

在编译期间,当c代码转换为汇编语言时,三元运算符是否转换为if-else块?

2 个答案:

答案 0 :(得分:1)

简答:不。

机器指令(或粗略地说,是人类可以更容易理解的机器指令的更高级别表示),没有if / else构造。最多会有某种形式的条件跳转。

实际上,if / else构造最初可能会映射到使用条件跳转的代码。三元?:的工作最初可能至少以相同的方式映射。

然而,编译器会对代码进行一些相当高级的优化。根据CPU的需要,优化器可能会完全重新排序或删除一些具有条件跳转的代码块,并使用其他机制将其替换为产生相同结果的其他代码。

答案 1 :(得分:0)

如果在编译的c

中创建了else块,则答案为no