分析环境
- x86-64 gcc 5.4
条件运算符
之前一直认为 条件运算符(?)
属于语法糖。其实并不是。
代码分析
c 语言
int max(int x, int y){
return x > y ? x : y;
}
int max2(int x, int y){
if(x > y)
return x;
else
return y;
}
C 和汇编代码对照
由上图可见:
- max 中
? 条件运算符
编译后是顺序执行的。使用的是 cmovge
这个条件复制。 - max2 中采用的是条件分支。
References
- 条件运算符