首页 > 后端开发 > C++ > 是`

是`

Linda Hamilton
发布: 2024-12-22 18:29:14
原创
200 人浏览过

Is `

在使用比较运算符

的典型 if 语句中更快或

机器代码生成

    在大多数架构(包括 x86)上,积分比较采用以下机器指令:
  • 修改 EFLAGS 寄存器的测试或 cmp 指令
跳转指令(Jcc) 基于比较类型

跳转指令包括jne(不等于则跳转)、jz(零则跳转)、jg(大于则跳转)等。

示例代码

if (a < b) {
    // Do something 1
}
登录后复制
考虑以下内容例如:

if (a <= b) {
    // Do something 2
}
登录后复制

if (a < b)
mov eax, [a]
cmp eax, [b]
jge .L2
// Do something 1

if (a <= b)
mov eax, [a]
cmp eax, [b]
jg .L5
// Do something 2
登录后复制
比较编译器生成的汇编代码,我们看到所使用的跳转指令之间的差异:jge 与 jg。

因此,机器代码中唯一的区别是跳转指令,表明比较本身需要相同数量的

浮点

相同的原理适用于 x87 浮点比较。编译器为两者生成相同数量的指令。和

结论

尽管运算符数量存在差异(

以上是是`的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板