首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

比较运算符的内部实现,该怎么解决

2013-10-23 
比较运算符的内部实现比较运算符,, 等预算符内部是怎么实现的。比如两个int a,b我们判断两个数的是否

比较运算符的内部实现
比较运算符>,<, ==等预算符内部是怎么实现的。比如两个int a,b;我们判断两个数的是否相等
if(a==b){}这边是怎么比的,是将a和b在内存中二进制位一位一位的进行比较是否相同吗?
换做是浮点数呢?
[解决办法]
本帖最后由 steedhorse 于 2013-10-19 00:23:32 编辑 从汇编语言看,一般是相减看是否为0。
[解决办法]
这个没有什么好神秘的,我们有高级语言的写的语句,在编译完后会对应一条或多条的汇编指令.
if(a==b){}
可以对应的指令是:
  mov         eax,dword ptr [b]
  cmp         dword ptr [a],eax //这是比较 
  jne         fun+88h (411528h) //这是根据比较的结果,进行分支跳转,如果不相等就跳到411528h处的指令往下执行,如果相等,就执行该指令的下一条指令.
[解决办法]
 cmp 其实是减法指令,相减,但不改变操作数.
只改变Cpu 标志位.

热点排行