比较运算符的顺序有区别吗?
#define CONST_VALUE 5
int variable;
...
if ( variable == CONST_VALUE ) // Method 1
...
OR
if ( CONST_VALUE == variable ) // Method 2
...
这只是一种偏好还是有某种比较顺序的强制性原因?
比较运算符的顺序有区别吗?
#define CONST_VALUE 5
int variable;
...
if ( variable == CONST_VALUE ) // Method 1
...
OR
if ( CONST_VALUE == variable ) // Method 2
...
这只是一种偏好还是有某种比较顺序的强制性原因?
一些人使用方法2的原因是,如果您在=的位置错误地键入了==,则将得到编译器错误。
但是,像我这样的人仍然会使用方法1,因为他们发现它更易读,而且如果出现错误,它将在测试期间(或者在某些情况下,在代码的静态分析期间)被检测到。
3==var
,那么你会记得检查是否有拼写错误。 - DisgruntledGoat正如其他人提到的那样,CONST_VALUE == 变量名称可以避免 = 打错成 == 的错误。
我仍然使用 "变量名称 == CONST_VALUE" 的方式,因为我认为这样更易读。当我看到以下代码时:
if(false == somevariable)
我的血压升高了。
if (CONST_VALUE == variable)
这样的写法,但如果我看到 if(false == somevariable)
这种写法时,我的血压也会上升。(因为这应该写成 if(!somevariable)
。) - sbi第一种变量
if (variable == CONST_VALUE)
更好,因为它更易读。它遵循惯例(数学中也使用的惯例),即最变化的值排在最前面。
第二种变体
if (CONST_VALUE == variable)
有些人使用它来防止将等号检查与赋值混淆
if (CONST_VALUE = variable)
其他人已经指出了原因。= / ==混淆。我更喜欢第一个版本,因为它更紧密地遵循了思维过程。一些编译器通过在遇到类似情况时发出警告来缓解=和==的混淆。
if(a=b)
if((a=b))
然后我会将其写成
if( (a=b) != 0)