Java &引用;如果;语句,常数相等

Java &引用;如果;语句,常数相等,java,c++,if-statement,Java,C++,If Statement,可能重复: 当我阅读一些源代码时,if语句是这样编码的 if (1 == a) { ... } 而不是 if (a == 1){ ... } 我读过一本关于这种方式优点的编程书,但记不清它到底是关于什么的。有人知道这件事吗 (抱歉,如果这个问题打扰了您:-)优点是编译器会立即告诉您该错误。例如,a=1将编译,但在运行时会产生错误,而1=a将在编译时产生错误,因为1不是有效的左值 示例:这将立即产生错误: int a = 0; if(1 = a) {

可能重复:

当我阅读一些源代码时,if语句是这样编码的

if (1 == a) {
   ...
}
而不是

if (a == 1){
    ...
}
我读过一本关于这种方式优点的编程书,但记不清它到底是关于什么的。有人知道这件事吗


(抱歉,如果这个问题打扰了您:-)

优点是编译器会立即告诉您该错误。例如,
a=1
将编译,但在运行时会产生错误,而
1=a
将在编译时产生错误,因为
1
不是有效的左值

示例:这将立即产生错误:

       int a = 0;
       if(1 = a) {
        print("test");
       }
然而,这将编译(根据编译器的不同,可能会产生警告),但会在运行时引起问题

       int a = 0;
       if(a = 1) {
           print("test");
       }
这里的主要思想是确保在某种条件下使用
==
,而不是
=


也就是说,现在每一个现代编译器(如Eclipse)都会将上述内容视为一个错误。因此,这并不像以前在记事本上和第六天那样重要(在我看来)。我个人更喜欢
a==1
,因为我觉得它更可读。

优点是编译器会立即告诉您该错误。例如,
a=1
将编译,但在运行时会产生错误,而
1=a
将在编译时产生错误,因为
1
不是有效的左值

示例:这将立即产生错误:

       int a = 0;
       if(1 = a) {
        print("test");
       }
然而,这将编译(根据编译器的不同,可能会产生警告),但会在运行时引起问题

       int a = 0;
       if(a = 1) {
           print("test");
       }
这里的主要思想是确保在某种条件下使用
==
,而不是
=


也就是说,现在每一个现代编译器(如Eclipse)都会将上述内容视为一个错误。因此,这并不像以前在记事本上和第六天那样重要(在我看来)。我个人更喜欢
a==1
,因为这对我来说更容易理解。

如果你漏掉
=
1=a
是一个编译器错误,而
a=1
是一个微妙的错误。

如果你漏掉
=
1=a
是一个编译器错误,然而
a=1
是一个微妙的错误。

在经典C语言中,条件是一个积分表达式,编写起来非常容易

if (a = 1)

错了。问题是,如果您这样做,编译器不会抱怨,因为赋值的计算结果也是整数。反向编写表达式会导致如果您输入了这个错误,代码将无法编译。在C中这样做不是一个坏主意;它在其他语言中的意义要小得多。

在经典C语言中,条件是一个积分表达式,编写起来非常简单

if (a = 1)

错了。问题是,如果您这样做,编译器不会抱怨,因为赋值的计算结果也是整数。反向编写表达式会导致如果您输入了这个错误,代码将无法编译。在C中这样做不是一个坏主意;它在其他语言中的意义要小得多。

@John-Not除非1被定义为变量,否则它不是。阅读我的帖子。a=1至少会给你一个大警告:)@Vlad-yes-true,具体取决于编译器。。。以前的gcc编译器甚至没有在这方面发出警告。在vi中经常被胖指法打败:不,我刚试过,它很有效,我一直认为你做不到,第二课learned@John-酷,谢谢你收回否决票:)@John-不是,除非1被定义为变量。阅读我的帖子。a=1至少会给你一个大警告:)@Vlad-yes-true,具体取决于编译器。。。以前的gcc编译器甚至没有在这方面发出警告。在vi中经常被胖指法打败:不,我刚试过,它很有效,我一直认为你做不到,第二课learned@John-酷,谢谢你收回否决票:)and和@buzzz的可能重复-实际上在java的情况下是“Yoda条件”不相关,因为无论if语句中的
1=a
vs
a=1
,javac都会产生错误。对于C/C++我知道它是相关的。and和@bubuzzz的可能重复-实际上,对于java,“Yoda条件”是不相关的,因为javac将产生一个错误,无论if语句中的
1=a
vs
a=1
。对于C/C++来说,我知道它是相关的。