int i=11;
i+=i++;
System.out.print(i);
这里的i输出为22,可是这段代码在 C中的输出结果确实23;再有如果将上面这段代码改为:
int i=11;
int j=11;
j+=i++;
System.out.print(j);
System.out.print(i);
这里的输出j为22,可是i确变成了12;
能告诉我 为什么么? 谢谢大家 了
i+=i++;
System.out.print(i);
这里的i输出为22,可是这段代码在 C中的输出结果确实23;再有如果将上面这段代码改为:
int i=11;
int j=11;
j+=i++;
System.out.print(j);
System.out.print(i);
这里的输出j为22,可是i确变成了12;
能告诉我 为什么么? 谢谢大家 了
int i=11;
int j=11;
j = j + i;
i++;
System.out.print(j);
System.out.print(i);
这是一个优先顺序的问题。可以参看think in java的介绍
i = 12
i+=i++;
System.out.print(i);
这里的i输出为22,可是这段代码在 C中的输出结果确实23;)
这个问题,是因为Java的编译器和C语言的编译器不同而造成的结果。其实在Virual C++、Turbo C 2.0 以及Java的不同版本,对于++的问题,因其编译器的不一样,其结果也会有差异的。
在Java语言里,在“i+=i++”中,“i++”是为11的,之后i=12;“i+=i++”其实就是“i=i+(i++)”,因为i=11,i++也为11,所以表达式运行之后i为22。(再有如果将上面这段代码改为:
int i=11;
int j=11;
j+=i++;
System.out.print(j);
System.out.print(i);
这里的输出j为22,可是i确变成了12;)
这个问题,“i++”在表达式中为11,表达式运行之后i的值为12;表达式“j+=i++”实际上就是表达式“j=j+(i++)”,因为i为11,j为11,运行之后j的值就是22了。
i=i++;
j=j+i;
在“i=i++”这个表达式未完成时,i为11,即在“i=i++;”这个表达式中等号右边的值为11。这个表达式完成之后,到下一条表达式即“j=j+i;”中,i的值才为12。兄弟,清楚了吗?
i = 12