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;
能告诉我 为什么么? 谢谢大家 了

解决方案 »

  1.   

    你可以把这段代码这样写;
    int i=11;
    int j=11;
    j = j + i;
    i++;
    System.out.print(j);
    System.out.print(i);
    这是一个优先顺序的问题。可以参看think in java的介绍
      

  2.   

    当j+=i++的时候j是22,i是12 我问的是为什么在i+=i++的时候 i确变成了22 那个++为什么没了
      

  3.   

    j += i++; j = j+ (i++); //i=11, 执行完该语句后,i自增,等于12j = 11 + 11 ;
    i = 12
      

  4.   

    (int i=11;
    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了。
      

  5.   

    int i=11,j=11;
    i=i++;
    j=j+i;
    在“i=i++”这个表达式未完成时,i为11,即在“i=i++;”这个表达式中等号右边的值为11。这个表达式完成之后,到下一条表达式即“j=j+i;”中,i的值才为12。兄弟,清楚了吗?
      

  6.   

    j += i++; j = j+ (i++); //i=11, 执行完该语句后,i自增,等于12j = 11 + 11 ;
    i = 12