i=i++ 在C++ 与 JAVA

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:00:37
public class ABC {

public static void main(String args[]){
int i = 0;
i = i++;
System.out.println(i);}

}

在JAVA里输出的是 0 ;

但是在C++里输出的是 1 ;

#include<iostream>
using namespace std;

void main(){
int i = 0;
i = i++;
cout<<i<<endl;
}

为什么同一代码在C++,与java里的结果不一样呢。请知道的朋友,告诉我。谢谢了。

在java中的流程是:首先将值0赋给i,然后在i=i++这个语句中,是先将后面一个i的值对前面那个i进行再次赋值后,然后再给i本身加上1!

如果你这是一个循环语句,在下一个循环当中,i的值就会为1.

至于c++中是怎么一回事我就不明白了,没学过c!

当然不一样了,java和c++本来就是两种不同的东西,就像中国人和美国人,能一样吗!java是先自加,i变成1,再把原来的值0赋给i,于是i=0;c++是先赋值再自加,即先i=i=0,执行i++,再所以i变成1。

ps:应该避免这种钻牛角尖的写法,要么i++,要么i=i+1。

为了避免类似上面的矛盾,以及便于软件的维护,通常不把代码写成上面那样的.如果是想得到1,把i=i++;改写成i=i+1;自加(赋值运算)通常是放在循环里面用的,如for(i = 0; i < N; i++){}

java里面是先赋值,再加1,输出0. C++是先加1,再赋值,输出1.

java的语法错了 老兄
i++的意思就是i=i+1