java和c++之间的一个比较诡异的问题。

来源:百度知道 编辑:UC知道 时间:2024/04/29 06:56:00
在java中
int a = 2;
a *= a *= a *= a;
System.out.println("a =" + a);
这段代码会输出:a = 16
int a = 2;
a *= a *= a *= a;
cout<<"a ="<<a;结果是256
这很奇怪哦,希望高手给讲解一下。

java 在表达式中 未参与运算的a仍然是2
c++ 则所有的a 跟着最新的值变动。
a*=a*=a*=2 a 都是2
a*=a*=4 a都是4
a*=16 a都是16

垃圾教材害死人,老教学生纠结在这些无聊的问题上,实际项目中傻×才写这种有歧义的代码。

我想c++比java多执行了一次自乘,找个反编译的软件,看看具体执行过程

是啊,这种代码在规范的程序中不会出现的!
太无聊了,

不要放在这个无聊的事情上,这个是跟编译器有关的。