社区
C++ 语言
帖子详情
C语言中if(x>y)和if(x-y>0)这两个条件等价吗?
CyberLogix
2010-06-12 02:08:46
如果x,y都是int类型
C语言中if(x>y)和if(x-y>0)这两个条件等价吗?
...全文
882
14
打赏
收藏
C语言中if(x>y)和if(x-y>0)这两个条件等价吗?
如果x,y都是int类型C语言中if(x>y)和if(x-y>0)这两个条件等价吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gz_qmc
2010-06-12
打赏
举报
回复
x>y
mov x
mov y
cmp
ju ..............
x-y>0
mov x
mov y
sub
jn
一个效果
dsswxl
2010-06-12
打赏
举报
回复
在逻辑上这两句是一样的,数学老师教的。
在效率上,if (x > y)效率会高一点。以下是他们各自的汇编代码:
if (x > y)
00401056 mov eax,dword ptr [ebp-4] ;2个时钟周期
00401059 cmp eax,dword ptr [ebp-8] ;13个时钟周期
0040105C jle main+35h (00401065) ;16个时钟周期
if (x - y > 0)
00401065 mov ecx,dword ptr [ebp-4] ;2个时钟周期
00401068 sub ecx,dword ptr [ebp-8] ;13个时钟周期
0040106B test ecx,ecx ;3个时钟周期
0040106D jle main+46h (00401076) ;16个时钟周期
显然第一种写法运行速度快些。
Xiaoloveliuforever
2010-06-12
打赏
举报
回复
当然 我的汇编的确是学的很烂的 完全是个门外汉
Xiaoloveliuforever
2010-06-12
打赏
举报
回复
[Quote=引用 6 楼 jenf 的回复:]
看了debug下的汇编,第一个3行代码:
mov
cmp
jle
第二个四行代码:
mov
sub
test
jle
[/Quote]
如果让我用汇编来写这段代码的话 恐怕不止这几行
colorfulcode
2010-06-12
打赏
举报
回复
晕,当我放屁,
原来大前提:“如果x,y都是int类型”
alwjuq
2010-06-12
打赏
举报
回复
if(x-y>0)
要先计算x-y 然后和0比较
要多做一步
colorfulcode
2010-06-12
打赏
举报
回复
unsigned int a ,b;
a=9;
b=100;
cout << (a>b)<<endl; // 0
cout << (a-b>0)<<endl; // error
Zeilone
2010-06-12
打赏
举报
回复
[Quote=引用 6 楼 jenf 的回复:]
看了debug下的汇编,第一个3行代码:
mov
cmp
jle
第二个四行代码:
mov
sub
test
jle
[/Quote]
cmp = sub + test吧?
很久没研究过汇编了
感觉上应该一样
jenf
2010-06-12
打赏
举报
回复
看了debug下的汇编,第一个3行代码:
mov
cmp
jle
第二个四行代码:
mov
sub
test
jle
向立天
2010-06-12
打赏
举报
回复
如果是浮点型应该用if(x-y>0)
因为浮点型数据有精度问题
lylm
2010-06-12
打赏
举报
回复
等价,x>y效率高
CyberLogix
2010-06-12
打赏
举报
回复
欢迎深入讨论,而不是泛泛而谈
别逗我乐
2010-06-12
打赏
举报
回复
在
逻辑
上是等价的,
在
效率
上,等待大牛回答!!
wanilyer
2010-06-12
打赏
举报
回复
等价
《回复内容太短了》
问题求教
A:
C语言
中
有以下两种写法:if (x>y) {......}和if (x-y>0) {......}请问这两种写法是不是完全
等价
的? Q:逻辑
等价
但有的情况下不
等价
如果x和y其
中
有一个是无符号int类型且x=1,y=2x-y>0在逻辑上是非真,但实际上会变成真如果是那位知的朋友路过的话,请帮忙解释一下,本人不胜感谢特别是了解计算机内部机制的,谢谢~~~~~~~~~~~~~~~
c语言
push,
C语言
push(x,y)
C语言
中
If(!x) y ++; x)If(!x)y++;在
C语言
中
if的
条件
为两种,真和假.真的情况,1==1和任何非零值可以看为真.比如if(2==2)和if(1)看成是满足
条件
.假的情况,1==2和0都可以看为假,比如if(1==2x>=y>=z
c语言
z>=y>=x;的意思是先求z>=y的值也就是4>=4;这个结果是真,也就是1然后求1>=x也就是...
Python 语言之 -
条件
语句
计算机程序设计的一个重要概念,就是精确控制。需要开发者设计一个或多个可以检测的
条件
,随着程序语句的执行和
条件
检测的满足与否,决定程序的执行顺序。Python 语言提供了以下的
条件
控制类型语句。 if 语句 if….else 语句 if..elif..else 语句 嵌套if 语句 含 not 操作符的 if语句 含 and 操作符的 if语句 含 in 操作符的 if 语句 Python if 语句 if 表达式: 语句 Python 的 if 语句会执行检测...
c语言
(x 15) (X 15),(完整版)
c语言
选择结构试题带答案(15页)-原创力文档
一、 选 择题1. 以下非法的赋值语句是A: n=(i=2,++i); B: j++; C: ++(i+1); D: x=j>0;2. 已有定义 :int x=3,y=4,z=5 ;,则表达式 !(x+y)+z-1 && y+z/2 的值是A: 6 B: 0 C: 2 ...
C语言
选择题库(3)
C语言
选择题库(3)
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章