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里的结果不一样呢。请知道的朋友,告诉我。谢谢了。
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