语句x=(a=3,b=++a);x等于多少,能详细点说明运行过程麽

如题所述

  x最后等于4。
  (a=3,b=++a)整体是一个逗号表达式,逗号表达式从左往右求值,整个表达式的值为逗号后面的表达式的值,换言之,(a=3,b=++a)的值即表达式(b=++a)的值,而(b=++a)是一个赋值表达式,其值为赋值后的左操作数(此处即b)。
  模拟逗号表达式的求值过程,先求值表达式(a=3),将3赋值给a;然后求值表达式(b=++a),将a递增并将递增后(因为是前置++,所以递增后再赋值)的值(此处即4)赋值给b。
  最后执行x=(a=3,b=++a),因为(a=3,b=++a)的值是b,此处相当于将b赋值给x。通过先前的分析知道b此时的值为4,因此x最后也等于4。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-18
int a=0;a=++a;
生成的字节码是:
0 iconst_0 -----0压入栈顶
1 istore_1 [a] -----栈顶值(0)存入局部变量1(a)
2 iinc 1 1 [a] -----变量1自加(++a操作,自加后变量1的值为1)
5 iload_1 [a] -----变量1的值压入栈顶(值为1)(++a效果)
6 istore_1 [a] -----将栈顶值(1)存入变量1(=操作)
a的值依次变化为:0->1->1
x为4本回答被网友采纳