C语言拾趣---关于if和三目运算符
来源:互联网 发布:飞利浦d908软件 编辑:程序博客网 时间:2024/05/16 06:40
以前一直以为三目运算符作为运算符会比if更加简洁,今天使用VS2008对C++代码进行反汇编以后发现我一直都是错的…
代码如下:
void main(void)
{
int a,b,c,d,e,f;
a = 1;
b = 2;
c = 3;
d = 4;
if(a > b){
e = a;
}
else{
e = b;
}
f = c>d?c:d;
}
比较反汇编结果:
00A113AA mov eax,dword ptr [a] <-> 00A113C0 mov eax,dword ptr [c]
00A113AD cmp eax,dword ptr [b] <-> 00A113C3 cmp eax,dword ptr [d]
00A113B0 jle main+4Ah (0A113BAh) <-> 00A113C6 jle main+63h (0A113D3h)
00A113B2 mov eax,dword ptr [a] <-> 00A113C8 mov ecx,dword ptr [c]
00A113B5 mov dword ptr [e],eax <-> 00A113CB mov dword ptr [ebp-10Ch],ecx
00A113B8 jmp main+50h (0A113C0h) <-> 00A113D1 jmp main+6Ch (0A113DCh)
00A113BA mov eax,dword ptr [b] <-> 00A113D3 mov edx,dword ptr [d]
00A113BD mov dword ptr [e],eax <-> 00A113D6 mov dword ptr [ebp-10Ch],edx
<-> 00A113DC mov eax,dword ptr [ebp-10Ch]
<-> 00A113E2 mov dword ptr [f],eax
哇塞,三目运算符居然使用了临时位置,结果多了两次mov操作。
结果:if比三目运算符使用的效率高。
- C语言拾趣---关于if和三目运算符
- C语言表达式和运算符(三)
- 1021: 闰年问题 关于if else 和 三目运算符 的思考
- 关于if else 和 三目运算符的效率问题(java 版)
- C语言关于位<<和>>运算符
- C语言的三目运算符
- C语言中的三目运算符
- C语言(13)-----三目运算符
- if...else和三目运算符的区别
- c语言基本运算中的自增运算符和自减运算符以及三目运算符
- C语言比较两个数的大小使用if-else语句和条件运算符
- 关于C语言中的运算符和进制转换
- [C++]引用和三目运算符
- C语言第二节-关系运算符,switch,if
- C 语言的运算符表达式 if switch while
- C语言条件运算符与if-else语句
- 三目运算符在C语音和C++语言中的区别
- C语言和C++的几点不同之处,const,register,三目运算符,&引用
- 2009全国高考各地作文题目一览
- forgeting is remembering
- 下半部和推后执行的工作
- 随便写点吧
- Skype V2 + PulseAudio 解决方案
- C语言拾趣---关于if和三目运算符
- DLL相关
- CQ60-208tx安装手册,完美解决疑难问题
- 项目前台开发感言之开发思想(2)
- 计算机4级
- JavaOne 2009 – Day 4
- 最近忙着毕业设计
- Delphi 编辑器快捷键 我尚未知的
- 下半部和推后执行的工作(续)