问大家一个很简单的i++的问题,当int i=3;int a=(i++);System.out.println(i);System.out.println(a); a的值是3 i的值是4 那么int i=3;int b=(i++)+(i++);System.out.println(i); System.out.println(b); 这里我知道i的值是5 但是我就想不通的是b的值为什么是7,同样int i=3;int c=(i++)+(i++)+(i++);System.out.println(c); System.out.println(i);我也知道这个i的值是怎么算出来的,但是这个C的值是12,那这个12是怎么算出来的呢!还有一个int i=3; int a=(i++); int e=(i++)+(i++)+(i++)+(i++)+(i++);
System.out.println(i);System.out.println(a); System.out.println(e);这里的i=9;a=3; e=30;这个又是怎么算的,能不能把里面算的过程讲给我看一下。谢谢了我知道i++是很算后自增,但是我想知道这个是怎么算出来的一个的一个过程。谢谢大家帮我写出来。我是一个初学者。
System.out.println(i);System.out.println(a); System.out.println(e);这里的i=9;a=3; e=30;这个又是怎么算的,能不能把里面算的过程讲给我看一下。谢谢了我知道i++是很算后自增,但是我想知道这个是怎么算出来的一个的一个过程。谢谢大家帮我写出来。我是一个初学者。
int b=(i++)+(i++);
等效于:
int i = 3;
int b = i; // b = 3;
i ++;
b += i; // b = 3 + 4
i ++;所以,结果是:i=5; b=7; 依此类推。最后一个
int i=3;
int a=(i++); // a=3; i=4;
int e=(i++)+(i++)+(i++)+(i++)+(i++); // int e = 4 + 5 + 6 + 7 + 8 = 30;
举个例子大家看看:
C++:
int k = 6;
int i = 3;
if(k == (i++)+(i++))
{
cout<<"Enter the if case"<<endl;
}
else
{
cout<<"Enter the else case"<<endl;
}
JAVA:
int k = 6;
int i = 3;
if(k == (i++)+(i++))
{
System.out.println("Enter the if case");
}
else
{
System.out.println("Enter the else case");
}
执行的结果分别为:
C++:Enter the if case
JAVA:Enter the else case
显然在C++中,是语句执行完后再执行++操作的,这个从汇编代码中也可以看出,而对于JAVA则取完i++的值后,马上执行++操作.因此,对于int i=3;int b=(i++)+(i++);的处理
C++中,b的值肯定为6,而java则为3+4=7,其它的类推.只要记住两者之间的最大差别:C++是表达式计算机完成后或语句完成后执行后加操作,而JAVA取完i++的值后马上后加,再执行其它的语句,不需要等到语句结束i的值就已经增加.