prev up next   top/contents search

comp.lang.c FAQ 列表· 第 17.4 题

为什么有些人写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 页


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管