我心中有一个问题。在很多地方我看到了
int a=2;
if(2==a){
//Some operation
}
您能告诉我2==a
代替a==2
进行比较的优势是什么。
答案 0 :(得分:11)
有些人喜欢这样做,以便在他们意外输入=
而不是==
时强制显示错误,而不是错误行为。但是:
所以唯一真正的目的是让代码混淆阅读。
更好的习惯可能是声明所有变量const
,除非您特别希望它们是可变的。这也可以防止意外分配,同时使代码更容易而不是更难以推理。
答案 1 :(得分:3)
这是在前言/介绍中提到的故事后出名的 这本书专家C编程:深层C秘密作者Peter van der Linden 。 $ 2百万错误与此概念有关。所以这本书的专家
if (i=3)
instead of:
if (i==3)
有些程序员养成了先写文字的习惯,如下所示:if (3 == i)中。然后,如果意外遗漏了等号,编译器会抱怨" 尝试分配到文字。"在比较两个变量时,这不会保护你,但每一点都有帮助。
1993年春天,在SunSoft的操作系统开发小组中,我们有一个优先级"窃听器 报告来描述异步I / O库中的问题。这个错误阻止了这笔交易 价值2000万美元的硬件给那些特别需要库功能的客户,所以 我们非常积极地找到它。经过一些密集的调试会议,问题是 最后追溯到一个声明:
X == 2;
这是打算作为转让声明的错字。程序员的手指有了 反弹"等于"键,意外按两次而不是一次。声明如写 比较x到2,生成true或false,并丢弃结果。