i == 0和0 == i之间有区别吗?

Raf*_*ari 8 php c c# c++

第一个代码:

  if(i==0) {// do instructions here}
Run Code Online (Sandbox Code Playgroud)

第二个代码:

  if(0==i) { // do instructions here }
Run Code Online (Sandbox Code Playgroud)

块之间有什么区别?

Alo*_*ave 29

在功能上,没有区别.
一些开发人员更喜欢编写第二种格式以避免分配拼写错误(如果你错过了=),编译器会警告输入错误.
第二个是着名的尤达条件.

尤达条件

我说没有区别因为,你无法防范每一个微不足道的细节,依靠编译器为你大声喊叫.如果你打算写一个==你应该期待自己写一个==而不是一个=.
使用第二种格式只会导致一些模糊的不可读代码.
此外,大多数主流的编译器警告的分配,而不是平等的错字发射警告,一旦你让所有的警告(你应该反正).

  • 它太糟糕了,他们没有对[行话问题]进行历史性锁定(http://stackoverflow.com/questions/2349378/new-programming-jargon-you-coined) (3认同)

Ben*_*oît 7

第二个版本应该更安全.

如果您忘记了一个等号,它不会将i的值更改为零.


R..*_*R.. 5

在功能上,它们在C中是相同的; 我不确定运算符重载等丑陋的东西会发挥作用的其他语言.

在风格上,后者非常反直觉,我个人觉得它非常难看.问题的关键是让编译器抛出一个错误,当你不小心写=来代替==,但良好的编译器可以选择要提醒你这个反正所以它是没有必要的.