当我读取一些源代码时,if语句以这种方式编码,
if (1 == a) {
...
}
而不是
if (a == 1){
...
}
我读了一本关于这种方式优势的编程书,但是不记得究竟是什么。谁知道这件事?
(对不起,如果这个问题扰乱了你:-))
答案 0 :(得分:3)
优点是编译器会马上告诉你错误。例如,a = 1
将编译,但会在运行时产生错误,而1 = a
将在编译时产生错误,因为1
不是有效的左值。
示例:这会立即产生错误:
int a = 0;
if(1 = a) {
print("test");
}
虽然这将编译(可能会根据编译器产生警告),但它会在运行时导致问题。
int a = 0;
if(a = 1) {
print("test");
}
这里的主要想法是确保您在条件中使用==
而不是=
。
据说每个现代编译器(即Eclipse)都会将上述内容视为错误。所以它不像以前那样在记事本和vi时代(在我看来)。我个人更喜欢a == 1
,因为这对我来说更具可读性。
答案 1 :(得分:1)
在经典C中,条件是一个整数表达式,它很容易编写
if (a = 1)
错误。问题是如果你这样做,编译器就不会抱怨,因为赋值也会计算为整数。向后编写表达式使得如果你犯这个错字,代码将无法编译。在C中执行此操作并不是一个坏主意;它在其他语言中的意义不大。
答案 2 :(得分:0)
如果遗漏=
,1 = a
是编译错误,而a = 1
则是一个微妙的错误。