int x=5,y=3;
x+=x--*--y;
System.out.println(x);
结果x=15
为什么
int a=5,b=10;
(a++)+(++b)+a*b的值是82?
为什么,
x+=x--*--y中的x第2次使用却没有减一;
而a的第2次使用却用了a++后的值呢
Java a++,++a到底是什么时候执行的
答案:6 悬赏:20 手机版
解决时间 2021-02-20 09:28
- 提问者网友:抽煙菂渘情少年
- 2021-02-19 15:03
最佳答案
- 五星知识达人网友:从此江山别
- 2021-02-19 15:49
-- ++ 代表自身减一加一
a++表示先使用a的值,使用后a自身加一,++a表示在使用a的值之前先对a进行自身加一,加一后再使用改变后a的值
--同理
所以int x=5,y=3;
x+=x--*--y; //x+=x*(y-1) 及x=x+x*(y-1)=5+5*2=15,这里的x--没有意义
System.out.println(x);
int a=5,b=10;
(a++)+(++b)+a*b
5+11+6*11=82
a++表示先使用a的值,使用后a自身加一,++a表示在使用a的值之前先对a进行自身加一,加一后再使用改变后a的值
--同理
所以int x=5,y=3;
x+=x--*--y; //x+=x*(y-1) 及x=x+x*(y-1)=5+5*2=15,这里的x--没有意义
System.out.println(x);
int a=5,b=10;
(a++)+(++b)+a*b
5+11+6*11=82
全部回答
- 1楼网友:蓝房子
- 2021-02-19 18:49
A++ 意思就是 先显示A 再做A=A+1
++A 意思就是 做A=A+1 在显示A
- 2楼网友:时间的尘埃
- 2021-02-19 17:54
A++ 意思就是 先显示A 再做A=A+1
++A 意思就是 做A=A+1 在显示A
用括号括起来就无所谓了
- 3楼网友:举杯邀酒敬孤独
- 2021-02-19 17:43
i=9 没有争议,j=10 没有争议 ,主要是 m 和 n 了:
m = ++i; 处理的过程是:
i = i+1; //此时 i = 9;
m = i; // 此时 m = 9;
-------------------------
n = m++;处理过程是:
n = m; // 此时 n=9;
m = m + 1; // 此时 m= 9+1 = 10;
得: n =9 ; m=10;
楼主主要没有搞清楚 m++ 和 ++m的区别:
(1)假设 int i = m++; 那处理过程是 先 i=m; 然后 m=m+1;
(2)但 int i = ++m; 那处理过程是 先 m=m+1; 然后 i= m;
所以当 m=1 时 , (1)的i 结果为 1 ,(2)i的结果为2;
我以前也为这个问题头痛啊,呵呵。
- 4楼网友:纵马山川剑自提
- 2021-02-19 17:09
-->int x=5,y=3;
x+=x--*--y;
按步骤拆开写为:
x = x + x-- * --y:即x = 5 + x-- * --y
x = 5 + x-- * 2:先计算--y 即 --3后 y = 2,x = 5
x = 5 + x-- * 2:再计算乘 即 x = 5 + 5 * 2
x = 5 + 5 * 2:再计算 x-- 即 x = 4
x = 5 + 5 * 2 = 15:最后赋值 x = 15
注:x-- 在这里没有显示出来,因为它的结果被覆盖了。
结果x=15
-->int a=5,b=10;
(a++)+(++b)+a*b的值是82?
同样:
(a++) + (++b) + a*b:即 5 + (++b) + a * b (a=5,b=10)
5 + (++b) + a * b: 5 + (++b) + a * b (a=4,b=10)
5 + 11 + a * b : (a=6,b=11)
5 + 11 + 6 * 11 = 83.
- 5楼网友:酒安江南
- 2021-02-19 16:23
A++在语句之后执行
++A在语句之前执行。
x+=x--*--y;
x--在之后执行,--y在之前执行,因此,此式子等于:
x=5+5*2=15.(由于x重新赋值了,所以x--不执行)
由于括号优先级高,因此先执行括号里的语句,(a++)+(++b)+a*b等同于:
5+11+6*11=82.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯