三元运算符在编译期间是否扩展到 if-else 块中?

Does ternary operator gets expanded into if-else block during compilation?

编译时c代码转汇编时,三元运算符是否转成if-else块?

答案是否定的 if else 块将在编译后的 c 中创建

简答:没有。

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

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

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