在编译过程中,当c代码转换为汇编语言时,三元运算符是否转换为if-else block ?
最佳答案
简短回答:不。
机器指令(或汇编,粗略地说,是人类更容易理解的机器指令的高级表示)没有 if
/else
构造。最多会有某种形式的条件跳转。
实际上,if
/else
构造最初可能会映射到使用条件跳转的代码。并且三元 ?:
的工作至少在最初可能会以相同的方式映射。
但是,编译器会对代码进行一些相当高级的优化。根据 CPU 的需要,优化器可能会完全重新排序或删除一些具有条件跳转的代码块,并使用其他机制将其替换为产生相同结果的其他代码。
关于c - 三元运算符在编译过程中是否扩展为 if-else block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44093300/