发新帖我要提问
123
返回列表
打印

为什么用if(x==0)而不是if(0==x)?

[复制链接]
楼主: 自动132sds
手机看帖
扫描二维码
随时随地手机跟帖
41
keer_zu| | 2015-3-25 15:22 | 只看该作者 回帖奖励 |倒序浏览
xmfbit 发表于 2015-3-17 19:40
额。。。其实推荐的应该是后者吧。。。但是人的习惯使然,让前者更流行

其实这个问题都不是问题

使用特权

评论回复
42
谭小健| | 2015-3-28 07:57 | 只看该作者
楼主是一个善于发现问题的人

使用特权

评论回复
43
keer_zu| | 2015-3-30 10:31 | 只看该作者
谭小健 发表于 2015-3-28 07:57
楼主是一个善于发现问题的人

:D

使用特权

评论回复
44
lqc754| | 2015-6-24 14:36 | 只看该作者
本帖最后由 cooldog123pp 于 2022-5-21 19:03 编辑

路过看一下!

使用特权

评论回复
45
1026869700| | 2015-6-25 16:22 | 只看该作者
yyy71cj 发表于 2014-12-28 11:45
在逻辑上,这本来就是一样的。

        但是在生活中,可能会有所不同。例如:

这个解释完全赞同

使用特权

评论回复
46
lifebird| | 2015-6-29 08:38 | 只看该作者
首先,我认可 if (0 == x)是个好习惯,尤其对于爱犯错的初学者,我在写给别人的程序中也会用 if (0 == x)
但我写给自己的程序都是用 if (x == 0) 且我强烈推荐这个写法,理由嘛,等你编程序到一定境界自然会感受到。

使用特权

评论回复
47
Hu.Te| | 2015-7-10 13:58 | 只看该作者
或许还是跟人的习惯有关~
绝不会有人这么理解语言:
if(你爸是工程师) 等价于 if(工程师是你爸)
你能从情感上接受吗?

使用特权

评论回复
48
lifebird| | 2015-7-11 09:23 | 只看该作者
楼上这位同学已经涉及到阅读程序思维的效率和耗费问题了,令人欣慰,其实解决这个问题的最终方式还是个人认真些,或者编译器对 if (x = 0) 给出警告,否则 大家碰到 if (x == y) 这种没常数的咋办。

使用特权

评论回复
49
diweo| | 2015-7-15 19:56 | 只看该作者
如果把if(x==0)写成if(x=0)会怎样呢?

这么低级的老掉牙的问题,在10年前,可能确实是个问题。
但是编译器也在不断发展。如果哪个编译器碰到这样的语句而没有报警,那我只能说这个编译器太旧了。

使用特权

评论回复
50
ljq13159213270| | 2015-9-14 11:08 | 只看该作者
本帖最后由 ljq13159213270 于 2015-9-14 11:09 编辑

楼主应该是写错了吧,一般编程时最好的就是常量在左边,即if(0==x),如果写成if(x=0)编译器会报错,而且编程规范中也是常量写左边的

使用特权

评论回复
51
Simon21ic| | 2015-9-16 15:18 | 只看该作者
本帖最后由 Simon21ic 于 2015-9-16 15:26 编辑

这有啥好争的?看习惯了,我习惯 0 == X

使用特权

评论回复
52
keer_zu| | 2015-9-17 07:38 | 只看该作者
值得推敲

使用特权

评论回复
53
江枫渔火| | 2015-10-7 23:23 | 只看该作者
一些前辈都把这些当做妙招炫技。

如果你是经常把==写成=,那你就应该用0==x的方式写比较式,将常量写在前面,一旦你漏写了一个=号,编译器会报错,你能快速发现错误。

一些主张是,尊重语义与自然语言逻辑,不要用胡里花哨的伎俩。这明明是为了弥补自己粗心的举措。因为违反语义,所以N多的新人会问:为什么用0==X而不是x==0?

但楼主的提问显然是相反的

使用特权

评论回复
54
lijiaxb| | 2015-10-9 16:06 | 只看该作者
gaoyang9992006 发表于 2014-12-29 00:05
这个作用就是直接使用汇编判0指令而不是比较指令

现代的编译器,完全可以识别了吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则