- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三目运算符和if--else 比较
ifelse
ifelse
三目运算符?:与其等价的 iiffeellssee 执行效率比较
部分源代码:
#defineMAX(A,B) ((A)=(B)?(B):(A))
intmacromax(int a,intb)//使用三目运算符
{
returnMAX(a,b);
}
intfunmax(int a,intb)//使用ifelse
{
if(a=b)returnb;
elsereturna;
}
voidfunc1()
{
inta=1,b=2;
funmax(a,b);
macromax(a,b);
}
使用vc6编译连接。
Debug
Debug
DDeebbuugg版本
以下是使用三目运算符的函数反汇编结果
0:000umacromax
test!macromax:
0040100055 push ebp
004010018bec mov ebp,esp
0040100383ec44 sub esp,0x44
0040100653 push ebx
0040100756 push esi
0040100857 push edi
004010098d7dbc lea edi,[ebp-0x44]
0040100cb911000000 mov ecx,0x11
0:000u
test!macromax+11: 8cccccccc mov eax,0xcccccccc 3ab rep stosd
004010188b4508 mov eax,[ebp+0x8]
0040101b3b450c cmp eax,[ebp+0xc]
0040101e7f08 jg test!macromax+0x28
004010208b4d0c mov ecx,[ebp+0xc]
00401023894dfc mov [ebp-0x4],ecx b06 jmp test!macromax+0x2e (0040102e)
0:000u
test!macromax+28:
004010288b5508 mov edx,[ebp+0x8]
0040102b8955fc mov [ebp-0x4],edx
0040102e8b45fc mov eax,[ebp-0x4]
004010315f pop edi
004010325e pop esi
004010335b pop ebx
004010348be5 mov esp,ebp
004010365d pop ebp
0:000u
test!macromax+37: 3 ret c int 3
以下是使用ifelse 反汇编的结果
0:000ufunmax
test!funmax:
0040104055
文档评论(0)