第一段代码:
if(i==0) {// do instructions here}
第二段代码:
if(0==i) { // do instructions here }
什么是块之间的区别?
在C语言中,从功能上讲它们是相同的;我不确定其他涉及丑陋操作符重载的语言是否也是这样。
从风格上看,后者非常反直觉,个人认为它极其丑陋。关键是当你意外写成=
而不是==
时,让编译器引发一个错误,但是好的编译器已经有了一个选项来警告您,因此这是不必要的。
对于C++,虽然可能性很小,但可能存在差异。这取决于i的类型。例如:
struct Foo
{
int x;
};
bool operator==(Foo lhs, int rhs)
{
return lhs.x == rhs;
}
bool operator==(int lhs, Foo rhs)
{
std::cout << "Hi!";
return true;
}
像那样编写代码的人当然应该被开除了。
当你写(0==i)时,误用单个等号符号的错误(例如)if (i = 0)被消除。没有其他问题。
其实两种写法没有区别,只是有些人更喜欢第二种方式来避免常见的错误——误用赋值符号(=
)而非等于符号(==
)。
0 = i
这样的代码在编译时会失败。
=
而让你花费时间进行调试。 - alex