public class F{
public static void main(String[] args){
int a = 1;
int b = 3;
int c = 4;
int d = c+++a;
int e = ++a+c;
System.out.println(d);
System.out.println(e);
}
}
d 的值为什么不是6,而是5啊,我认为的运算:d=c+++a,d的值先是c和a相加等于5,然后,再加1是6啊。为什么电脑是5。

解决方案 »

  1.   

    c++ 和++c不相同的,你要得到6你就写成int d = ++c+a; ++在前面是先赋值在用,++在后面是先用在赋值
      

  2.   

    ++在前面是先赋值在用,++在后面是先用在赋值C+++A 不是C+A是5吗,然后再加1,不是6吗??
      

  3.   

    是给C赋值不是给计算以后的结果复制  你去运行:
    int a = 4;
    int b = 4; 
    a++;
    ++b;
    System.out.println(a);
    System.out.println(b);就知道了
      

  4.   

    不管是++在前还是后都是给c赋的值不是给你整个表达式运算完后赋值,被复制的对象你搞错了
    c+++a是先运算嘛,就是5,完后在给c赋值加上1就是5咯, 要把赋值和运算的顺序和给谁赋值理解清楚就好了
      

  5.   

    电脑的预编译是从左到右的   先读取的自然是c++,然而c++的运算规则是先给值,在加加   这是其一
    其二是   因为c++ + a中   c++只是一个与a相同类型的变量名字   由其一可以得知c++的结果相当久是4
    就好比如是:
         int x = c++;
         int d = x + a;
    这样
    其实电脑在处理这样的数据时是先按照数学法则运算,之后将c++当成一个临时变量,而这个变量的值就是c++之后的值
      

  6.   

    你c前面int d = c+++a;将c+1变成5了++在后面先运算后加咯,c还是要加1的,++a是先加后运算这是a已经是2了,在和c=5相加就是7咯
      

  7.   


    int a = 1;
    int b = 3;
    int c = 4;
    int d = c+++a;   // d=(c++)+a  ,c++还是为4,d=4+1=5.  此时,c自加1 变为5.
    int e = ++a+c;   // e=(++a)+c  ,++a使a自加1 变为2,然后 e=2+5=7
    System.out.println(d);
    System.out.println(e);