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

[复制链接]
15431|54
华师单车汉 发表于 2015-2-5 21:21 | 显示全部楼层
早期为了误写==为=所以写x==0可能写为x=0;那么逻辑可能轩辕姨妈,但写为0=x绝对报错,但是毕竟x==0比较好看,所以目前的编译器可以把x=0写一个警告,如若实在判断的地方
keer_zu 发表于 2015-2-13 13:40 | 显示全部楼层
华师单车汉 发表于 2015-2-5 21:21
早期为了误写==为=所以写x==0可能写为x=0;那么逻辑可能轩辕姨妈,但写为0=x绝对报错,但是毕竟x==0比较好 ...

有道理。
birdSTM32 发表于 2015-2-14 15:54 | 显示全部楼层
一般用第二种表示方法,如果你要问一个为什么,那么推荐一本书《C专家编程》
keer_zu 发表于 2015-2-14 17:39 | 显示全部楼层
birdSTM32 发表于 2015-2-14 15:54
一般用第二种表示方法,如果你要问一个为什么,那么推荐一本书《C专家编程》 ...

哈哈,三本C语言书之一
sedatefire 发表于 2015-2-15 15:19 | 显示全部楼层
许多上档次的C规范,都是硬性要求的。
1. if (0 == x)
2. 禁止在判断语句中赋值,if (x=0)。一句代码只做一件事情。
chenzhi658 发表于 2015-2-15 15:51 | 显示全部楼层
原来如此:)
keer_zu 发表于 2015-2-17 17:08 | 显示全部楼层
sedatefire 发表于 2015-2-15 15:19
许多上档次的C规范,都是硬性要求的。
1. if (0 == x)
2. 禁止在判断语句中赋值,if (x=0)。一句代码只做一 ...

是的
原野之狼 发表于 2015-2-21 18:58 | 显示全部楼层
本帖最后由 原野之狼 于 2015-2-21 19:08 编辑

看看开源代码  有几个会写成 0==x 的?

我司测试给我提关于这个的单,我一概给驳回去,一句话:不改。

这样写的好处,也有人提到了: 当少写了一个等号的时候,会被告警。

除了这个“优点”,还有别的优点么?

因失误写成了 if ( x = 0)就不会有告警了么?

所以,还是看看世界上最优秀的人是怎么写代码的吧。

搞软件开发,夯实基本功,完善流程才是关键。
sedatefire 发表于 2015-3-10 13:57 | 显示全部楼层
原野之狼 发表于 2015-2-21 18:58
看看开源代码  有几个会写成 0==x 的?

我司测试给我提关于这个的单,我一概给驳回去,一句话:不改。

你就属于那种 资历高、老油条的;P
原野之狼 发表于 2015-3-11 00:05 | 显示全部楼层
sedatefire 发表于 2015-3-10 13:57
你就属于那种 资历高、老油条的

NO! 你说错了,是极客精神,而不是扯淡精神。
sedatefire 发表于 2015-3-11 11:48 | 显示全部楼层
原野之狼 发表于 2015-3-11 00:05
NO! 你说错了,是极客精神,而不是扯淡精神。

因失误写成了 if ( x = 0)就不会有告警了么?

if (x=0)
的写法,真心不会告警。直接赋值x为0,然后这个if永远为false。
so...
microsky 发表于 2015-3-11 14:09 | 显示全部楼层
if (x=0)会报警的

亲测
chenyu988 发表于 2015-3-11 14:29 | 显示全部楼层
if (x=0)真心不会报警,吃过亏的举手。
linqing171 发表于 2015-3-12 22:24 | 显示全部楼层
if(x=0) 在c#里面是错误, 首先x=0是个语句不再是个值,
x=0; if(x) 也编译不过,因为x是整数不是bool

编译器一般是警告,而PClint会直接报错, 所以keil等编译器里面最好加上pclint的插件.

另外,if(x=0) 这种低级错误,读书的时候确实犯过,但是后来基本没有见人犯过这种低级错误.
sedatefire 发表于 2015-3-13 11:35 | 显示全部楼层
linqing171 发表于 2015-3-12 22:24
if(x=0) 在c#里面是错误, 首先x=0是个语句不再是个值,
x=0; if(x) 也编译不过,因为x是整数不是bool

pclint可是个神器啊
在keil中如何装这个插件,you know?
sedatefire 发表于 2015-3-13 11:36 | 显示全部楼层

我编程7年,还没遇到哪一款C编译器会error的
当然,可以提高编译器的警告级别,最多有个warning
okhxyyo 发表于 2015-3-13 15:08 | 显示全部楼层
xueyingdao 发表于 2014-12-29 11:00
不单单是习惯问题,其实 0==X的写法 更为保险,漏写一个=号的时候, 编译器会报错。 ...

对的~~我想楼主的问题估计是问反了
keer_zu 发表于 2015-3-13 16:18 | 显示全部楼层
这个估计是假语村言 @yyy71cj
linqing171 发表于 2015-3-17 16:57 | 显示全部楼层
sedatefire 发表于 2015-3-13 11:35
pclint可是个神器啊
在keil中如何装这个插件,you know?

keil4 的菜单里自带接口,只需用下载个pclint, 设置一下目录和kcarm.lnt就可以了.
xmfbit 发表于 2015-3-17 19:40 | 显示全部楼层
额。。。其实推荐的应该是后者吧。。。但是人的习惯使然,让前者更流行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部