为何代码要推荐写为:if(0 == x)?

move_forward 2009-10-06 03:39:32
如题。
为何代码要推荐写为:if(0 == x),而if ( x == 0)就不ok?

thanks!
...全文
507 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aeris 2009-10-06
  • 打赏
  • 举报
回复
个人不建议写
if (0 == x)

理由:
1.不符合习惯,可读性差一点
2.如果是 if (x == y)误写成if (x = y),那么无论你正过来写还是倒过来写都没法避免问题。所以这种做法不能从根本上解决==误写成=问题。
3.涉及操作符重载的时候,有时是不能反过来写的(比如某些类库的设计有问题,忘记重载反过来的操作符了,还好一般都记得)。
cphj 2009-10-06
  • 打赏
  • 举报
回复
这是一个比较老旧的技巧,原因前面的回答都说了

补充一下:
这个技巧与C和C++的哲学有些矛盾,因为C/C++都是“相信程序员会做正确的事情”,也就是不要因为有可能出错就去限制程序员
而如果硬要规定这么写(0 == x),感觉自己都不相信自己,有点底气不足
并且,如果(x == y),都是变量的话,那怎么办呢?

其实现代很多代码扫描工具都可以对(x = 0)给出警告,没有必要那么紧张

当然,如果你一直习惯写(0 == x),也没错,自己习惯就好
delphiwcdj 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 thefirstz 的回复:]
如果不小心少写一个等号写成if(0 = x) 这样编译时候就会报错,但if(x = 0)不会报错
[/Quote]
yes
jackyjkchen 2009-10-06
  • 打赏
  • 举报
回复
现代化的编译器如果出现if(x=0)都会给警告的,也就是tc不给
很土 2009-10-06
  • 打赏
  • 举报
回复
个人觉得还是 if (x == 0) 比较好。

我的所有类库或产品中都没有使用 if (0 == x),因为这是一个不符合正常的逻辑思维,反而 if (x == 0) 更加符合正常的逻辑思维。

就象小学时的单位换算题:5元有多少分?答:100分/元 x 5元 = 500分
booksoon 2009-10-06
  • 打赏
  • 举报
回复
避免因为粗心写成if(x=0) 可参见<C语言陷阱>一书有精彩的论述
GoonYangXiaofang 2009-10-06
  • 打赏
  • 举报
回复
好像高质量C/C++里建议这么做。但是众多大师级人物写的书中并未出现0 == x的写法。
个人认为最好还是x == 0,这样可读性好。这也不是粗心的问题,如果很容易因粗心造成不必要麻烦的话,可能C++标准里早就出现代替==的符号了。
nenkeer 2009-10-06
  • 打赏
  • 举报
回复
这是一个用来防止自己马虎的小技巧
防止把if(x == 0)写成if(x = 0) 编译器不会报错 只能靠自己检查发现
如果是if(0 == x)的话 写成if(0 = x)编译器会报错
xiuxiu6 2009-10-06
  • 打赏
  • 举报
回复
避免粗心写成if(x=0)
yarise1943 2009-10-06
  • 打赏
  • 举报
回复
xm zm获得积分啊?
arong1234 2009-10-06
  • 打赏
  • 举报
回复
避免因为粗心写成if(x=0)
昵称很不好取 2009-10-06
  • 打赏
  • 举报
回复
如果不小心少写一个等号写成if(0 = x) 这样编译时候就会报错,但if(x = 0)不会报错

65,167

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧