假设int a=1,b=2;则表达式(++a⼀b)*b--的值是多少?答案是2,但是我不明白~~~

2024-11-22 18:58:11
推荐回答(5个)
回答1:

优先级问题,真正的程序中一定要尽量避免这种可读性差且宜出错的代码
这个表达式分解如下
a=a+1; //a=2
a=a/b; //a=1
a=a*b; //a=2
b=b-1; //b=1 这一句是这个表达式结束后的事情了,所以表达式的值是2

回答2:

(++a / b) * b--
此处 () 优先级最高,所以先计算(++a / b)
++a的值为2,b值为2,所以(++a / b) 的值为1
然后是计算1 * b--
b--是中的 -- 符号是后加减,就是说第一次运算不减
只有第二次运算该变量才执行减一操作
所以1 * b-- 等于1 * 2 等于 2

回答3:

运算符是有优先级的,本题中()的优先级最高,++,--次之,*,/最低。运行时,先运行()里面的内容++a/b,意思是(a+1)/b=1,b--的意思是先计算再自减,b--等于2,之后b=b-1,所以(++a/b)*b--的结果是2

回答4:

(++a/b)*b--;//小括号里面的优先级最高先执行++a/b,左++优先级比/高,所以先执行++,所以小括号的执行结果是((1+1)/2)=1;
//k=1*B--;//先执行乘法赋值给k再右减,所以如果你的表达式左值应该是2(即k值)
k=(++a/b)*b--;

回答5:

回答:++a/b a要先自增后在除以b ;(1)*b-- 是b要先乘以1后在自减