问为什么有些人写if(0 == x)来解决这个问题,而不是if(x == 0)?
答这是一个为了防范常见的错误而使用的技巧,该错误是将
if(x = 0)习惯性地将常量写在==前面,编译器会报错,如果你不小心输入
if(0 = x)很明显,对有些人来说,记住反转测试比记住输入双=符号要容易得多。(当然,不小心使用=来解决这个问题,而不是==是一个即使最有经验的 C 程序员也可能犯的输入错误。)
另一方面,有些人觉得这些反转的测试很难看或令人分心,并认为编译器应该警告if(x = 0)。(事实上,许多编译器确实会警告条件中的赋值,尽管你总是可以写if((x = expression))或if((x = expression) != 0)如果你确实是这个意思。)
参考文献:H&S 第 7.6.5 节,第 209-210 页