int i=2,j=2;
if(i=j)
.....
在C/C++中,这个是可以编译通过、并且可以运行的。
而在java中,这个在编译期就会报错。
本人觉得原因可能是这样:这个相当于将2赋值给i,然后if语句变成if(2),而在java中if语句中只有true,false两种判断逻辑的值,因此,在编译时会报错。而在C/C++中逻辑值可以是true,false,也可以是0,或非0值,因此在C/C++中,这个是可以编译通过、并且可以运行的。
如果是这样的情况:
boolean b = true , c = false;
if(b=c)
.....
编译会通过的,因为,这就相当于将false赋值给b,if语句变成if(false),表示永远不会进入if语句中执行。
而如果if(c=b),这就相当于将true赋值给c,if语句变成if(true),表示一定会进入if语句中执行。