永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-04-04 23:05
  • 提问者网友:暗中人
  • 2021-04-04 05:02
语句x=(a=3,b=++a);x等于多少,能详细点说明运行过程麽
最佳答案
  • 五星知识达人网友:刀戟声无边
  • 2021-04-04 05:23
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楼网友:不甚了了
  • 2021-04-04 06:04
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯