第一个代码:
if(i==0) {// do instructions here}
第二个代码:
if(0==i) { // do instructions here }
块之间有什么区别?
第二个版本应该更安全。
如果您忘记了一个等号,它不会将 i 的值更改为零。
在功能上,它们在 C 中是相同的;我不确定其他语言是否会出现诸如运算符重载之类的丑陋事物。
从风格上讲,后者非常违反直觉,我个人觉得它非常难看。=
关键是让编译器在你不小心写而不是时抛出错误==
,但是好的编译器有一个选项会警告你无论如何,所以它是不必要的。
对于 C++,虽然不太可能,但可能存在差异。这取决于我的类型。例如
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;
}
写这样的代码的人当然应该被枪杀。
是的,就 C# 而言,它们是相同的。对于更复杂的情况,请访问A==B vs B==A,有什么区别
当您编写 (0==i) 时,如果 (i = 0) 错误地使用单等号(例如 ),则消除了错误。没有其他的。
没有区别,有些人更喜欢第二个来捕捉做赋值(=
)而不是相等测试(==
)的常见错误
0 = i
编译失败
在 C# 中没有区别。然而,在 C++ 中,性能存在差异,这就是为什么你现在看到两者都在 C# 代码中使用 - 实际上我正在考虑 i++ 与 ++i 关于性能 - 0 == i 是 C/C++ 中的常见编码建议避免 i = 0 作为意外操作