以下语句将打印什么? 这道题很有意思的.
int i = 0, j = 0;
i = ++i + ++i + ++i;
j = j++ + j++ + j++ + j++;
System.out.println( i );
System.out.println( j );
int i = 0, j = 0;
i = ++i + ++i + ++i;
j = j++ + j++ + j++ + j++;
System.out.println( i );
System.out.println( j );
如果这段代码仅仅是为了测试,你可以Copy到JBuilder下运行看看结果
实在没感觉哪里经典与有意思
那么这个时候j的值却不6,而是7. 为什么会等于6呢?换成另外一个变量为什么最后的j++又会执行呢?
虽然一看就知道答案,但为什么会这样百思不得其解.
i=1+2;
i=3+4=7;j=j++ + j++ + j++ + j++;
j=0+1;
j=1+1;
j=2+2=4;
一个学长用的是c的什么编译器,
我们机房用的是vs 2003结果出的结果不同,没什么好想的,这个实用性不大,
而且思想也不是很明确...
最好是不要想太多.
vc和java编译器解析运算符计算稍有差别的
上面的是vc的编译算法,就是从左到右的。
而Java不同的。java是先将等号右边的执行完,返回个结果再赋给等号左边的如下i=(++i + ++i + ++i);
这样i=(1+2+3)=6;j=(j++ + j++ + j++ + j++); 这样j=(0+1+2+3)=6