int a=2;
int b=a+3*a++;
System.out.print(b);
//   b=???真变态

解决方案 »

  1.   

    int a=2;
    int b=a+3*a++;
    相当于
    int a=2;
    int b=a+3*a;
    a++;
      

  2.   

    这个不是优先级问题,也不是++a,a++的问题。
    这个应该是从左向右执行,还是从右向左执行的问题。java应该是从左向右执行。c好像是跟机器有关。
      

  3.   

    java 结果是8
    c结果也是8
      

  4.   

    类似于++a或者a++的问题 java和C运行的结果是不一样的 不知道是什么原因 
      

  5.   

    反正我这C  JAVA运行出来的结果都是8
      

  6.   

    C语言  对于加法   从右向左赋值;
            a=2;    3*a++   后  a=3;  b = a +3*a;中的前者值 为3.后者为2;结果为9;
    JAVA  对于加法   从左向右赋值  结果为8;
      

  7.   

    C和Java中+,都是自左向右的。。结果都是8;
      

  8.   

    int a=2;
    int b=a+3*a++;
    等同于:int a = 2;
           int c = a ;
           int d = 3 * a++;
           b = c + d;
           System.out.println(b);
    结果为:8如果:   int a = 2;
            int c  = 3 * a++;
            int b = a + c;
            System.out.println(b);
    结果是:9谢谢。
      

  9.   

    这个就看上什么样的编译器了,在同一个C++里面也是有两个编译器的,同样会有不同的结果。如果前面的a的取值为a++后的,那结果就是9了。
      

  10.   

    具体的输出结果要看编译器的具体实现。
    Java应该是8, Java跨平台。
    C编译器的不同实现,有可能结果不一样。
      

  11.   

       java 是8     C也应该是8
      

  12.   

    VC运行结果是8, TC运行结果是9
      

  13.   

    相当于
    int a=2;
    int c=a;
    int d=3*a++;
    int b=c+d;
    b=8
      

  14.   

    我给你们出一题玩玩.
    int a=3;
    a=a++ + a++ + a++;
    printf("%d",a);
      

  15.   

    c中和java中都是8;其实像这种问题没有必要问别人的自己用C和Java写一个小的测试程序一运行自己就知道了。
      

  16.   


    java为了保证WORA,规定求值从左到右; C/C++没有限定,由编译器发挥。
      

  17.   

    http://topic.csdn.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?96727
      

  18.   

    这个呢:int a=2;
    int b=(a++)+3*a++;
    System.out.println(b);
      

  19.   

    我记得很久以前在这个题的时候。C的结果是9.先会执行a++,然后前面的a会变成3
      

  20.   

    ++a是先把a加了 再做处理a++是把a处理以后再做+
      

  21.   

    Java,在内存中虽然已经计算完成了a++ 但是虚拟机并没有把计算完成的结果推送到栈中,栈中参与计算的依然是2,而不是3.栈中的值依次是(从上到下):2 3 2 ,栈顶端的就是2*3中的2 和 3 最后的2是+2的2.
    C不知道。。
      

  22.   

    从下面这个程序结果可以知道java是从左往右进行运算的:
    int a=2;
    int b;
    b=a++ +a++ +a++;
    System.out.println(b);运算结果是9;
    应该是2+3+4得出的结果
      

  23.   

    在eclipse下是8,dos下也是8.其他的就不知道了
      

  24.   

    虽然实际的代码很少会这样写,但人家就是要出这样的题,要不怎么选出优秀的程序员。要是叫你写个helloworld谁都会,人家凭什么选你呢,再说这也算是基础吧
      

  25.   

    这种面试题都是很一般的,这你都不会好好搞搞java基础吧
      

  26.   

    int a=2;
    int b=a+3*a++;
    System.out.print(b);2+3*2
    又不是++a所以不会输出a自加后的结果,如果用变量接收,再输出变量为9,从左到右执行,结果8
    最终结果8,----->>>>JAVA
      

  27.   

    我认为这种题目最没意思,优先级的问题完全可以交给()去处理,不要说什么效率不效率,这种效率的提高还不如在条件判断语句时根据需求构造哈夫曼树提高的效率来得高。实际项目开发过程中极少有这样的计算逻辑,而且就算有,也不建议这么写,因为代码难以阅读。C和JAVA处理结果不一样的话,那一个曾经学过C的来维护你的代码,可能就会觉得很吃力。所以写代码时不要太自以为是。
      

  28.   

    8;先执行(3*a++) 结果为6 a自加1但不影响这一行,要等到下一条语句是a才=3;所以答案为8
      

  29.   

    这个笔试题没有lz说的那么玄乎,只要打好基础,这种题还是比较esay的!
      

  30.   


    class Test{
    public static void main(string[] args){
    a=2;
    b=a+3*a++;
    system.out.println(b);
    }
    }java运行是8。
    C的话,应该也是一样的8.
      

  31.   

    这个问题有那么难吗,看着那么多人回答。
    这明显是java的代码啊,
    int a=2;
    int b=a+3*a++;
    System.out.print(b);
    楼主做这个题首先要高兴运算符优先级的问题,就本题而言,a++>*>+>=
    所以先运行a++,你要明白a++什么意思,先使用a,然后a的值在加一,(不过前面的a,jvm虚拟机已经将它编译,所以值是2.)所以是int b=a+3*2;然后再计算3*2
    ,int b=a+6;最后是int b=2+6;
    所以b=8
      

  32.   

    在有a++的情况下,a在同一个表达式的其他地方被引用,这种情况在C中是未定义的,java中不知道,去问sun吧