打印

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

[复制链接]
楼主: 自动132sds
手机看帖
扫描二维码
随时随地手机跟帖
21
早期为了误写==为=所以写x==0可能写为x=0;那么逻辑可能轩辕姨妈,但写为0=x绝对报错,但是毕竟x==0比较好看,所以目前的编译器可以把x=0写一个警告,如若实在判断的地方

使用特权

评论回复
22
keer_zu| | 2015-2-13 13:40 | 只看该作者
华师单车汉 发表于 2015-2-5 21:21
早期为了误写==为=所以写x==0可能写为x=0;那么逻辑可能轩辕姨妈,但写为0=x绝对报错,但是毕竟x==0比较好 ...

有道理。

使用特权

评论回复
23
birdSTM32| | 2015-2-14 15:54 | 只看该作者
一般用第二种表示方法,如果你要问一个为什么,那么推荐一本书《C专家编程》

使用特权

评论回复
24
keer_zu| | 2015-2-14 17:39 | 只看该作者
birdSTM32 发表于 2015-2-14 15:54
一般用第二种表示方法,如果你要问一个为什么,那么推荐一本书《C专家编程》 ...

哈哈,三本C语言书之一

使用特权

评论回复
25
sedatefire| | 2015-2-15 15:19 | 只看该作者
许多上档次的C规范,都是硬性要求的。
1. if (0 == x)
2. 禁止在判断语句中赋值,if (x=0)。一句代码只做一件事情。

使用特权

评论回复
26
chenzhi658| | 2015-2-15 15:51 | 只看该作者
原来如此:)

使用特权

评论回复
27
keer_zu| | 2015-2-17 17:08 | 只看该作者
sedatefire 发表于 2015-2-15 15:19
许多上档次的C规范,都是硬性要求的。
1. if (0 == x)
2. 禁止在判断语句中赋值,if (x=0)。一句代码只做一 ...

是的

使用特权

评论回复
28
原野之狼| | 2015-2-21 18:58 | 只看该作者
本帖最后由 原野之狼 于 2015-2-21 19:08 编辑

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

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

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

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

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

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

搞软件开发,夯实基本功,完善流程才是关键。

使用特权

评论回复
29
sedatefire| | 2015-3-10 13:57 | 只看该作者
原野之狼 发表于 2015-2-21 18:58
看看开源代码  有几个会写成 0==x 的?

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

你就属于那种 资历高、老油条的;P

使用特权

评论回复
30
原野之狼| | 2015-3-11 00:05 | 只看该作者
sedatefire 发表于 2015-3-10 13:57
你就属于那种 资历高、老油条的

NO! 你说错了,是极客精神,而不是扯淡精神。

使用特权

评论回复
31
sedatefire| | 2015-3-11 11:48 | 只看该作者
原野之狼 发表于 2015-3-11 00:05
NO! 你说错了,是极客精神,而不是扯淡精神。

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

if (x=0)
的写法,真心不会告警。直接赋值x为0,然后这个if永远为false。
so...

使用特权

评论回复
32
microsky| | 2015-3-11 14:09 | 只看该作者
if (x=0)会报警的

亲测

使用特权

评论回复
33
chenyu988| | 2015-3-11 14:29 | 只看该作者
if (x=0)真心不会报警,吃过亏的举手。

使用特权

评论回复
34
linqing171| | 2015-3-12 22:24 | 只看该作者
if(x=0) 在c#里面是错误, 首先x=0是个语句不再是个值,
x=0; if(x) 也编译不过,因为x是整数不是bool

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

另外,if(x=0) 这种低级错误,读书的时候确实犯过,但是后来基本没有见人犯过这种低级错误.

使用特权

评论回复
35
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?

使用特权

评论回复
36
sedatefire| | 2015-3-13 11:36 | 只看该作者

我编程7年,还没遇到哪一款C编译器会error的
当然,可以提高编译器的警告级别,最多有个warning

使用特权

评论回复
37
okhxyyo| | 2015-3-13 15:08 | 只看该作者
xueyingdao 发表于 2014-12-29 11:00
不单单是习惯问题,其实 0==X的写法 更为保险,漏写一个=号的时候, 编译器会报错。 ...

对的~~我想楼主的问题估计是问反了

使用特权

评论回复
38
keer_zu| | 2015-3-13 16:18 | 只看该作者
这个估计是假语村言 @yyy71cj

使用特权

评论回复
39
linqing171| | 2015-3-17 16:57 | 只看该作者
sedatefire 发表于 2015-3-13 11:35
pclint可是个神器啊
在keil中如何装这个插件,you know?

keil4 的菜单里自带接口,只需用下载个pclint, 设置一下目录和kcarm.lnt就可以了.

使用特权

评论回复
40
xmfbit| | 2015-3-17 19:40 | 只看该作者
额。。。其实推荐的应该是后者吧。。。但是人的习惯使然,让前者更流行

使用特权

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

本版积分规则