比较运算符的顺序是否有差异?
#define CONST_VALUE 5 int variable; ... if ( variable == CONST_VALUE ) // Method 1 ... OR if ( CONST_VALUE == variable ) // Method 2 ...
这只是一个偏好问题,还是有特定比较顺序的令人信服的理由?
有些人使用方法2的原因是因为如果你输入a =而不是==,你会得到一个编译器错误.
但是,你会有人(像我一样)仍然使用方法1,因为他们发现它更具可读性,如果有错误,它将在测试期间(或者在某些情况下,静态分析代码)被检测到.
唯一的区别是(CONST_VALUE == variable)使得常见错字(CONST_VALUE = variable)无法编译.
相比之下,如果(variable = CONST_VALUE)将导致编译器认为您打算将CONST_VALUE分配给'variable'.
=/==混淆是C中常见的错误来源,这就是人们试图解决编码约定问题的原因.
当然,如果您要比较两个变量,这将无法拯救您.
这个问题似乎与如何检查平等有关?(0 == i)或(i == 0)
这里有更多信息:http://cwe.mitre.org/data/definitions/481.html