java中,(a++)*(++a)和 (++a)*(a++) 15

令a=3,分别计算(a++)*(++a)=15(++a)*(a++)=16求教这是为什么... 令a=3,分别计算(a++)*(++a)=15
(++a)*(a++)=16
求教这是为什么
展开
 我来答
金色潜鸟
2018-06-13 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5734万
展开全部
不会得15。会得12。
a=3; (a++)*(++a)= 12; 因为 表达式里 a++ 用 a, ++a 用 a+1. 分步运算:
(1)a=3; (2) (a++) = a = 3; (3) (++a)=a+1=4; (4) 3*4 = 12, 得12;
(5)a=a+1=4+1=5 供后续语句使用。
---------
a=3; (++a)*(a++)=16; 因为 表达式里 a++ 用 a, ++a 用 a+1. 分步运算:
(1)a=3; (2) (++a)=a+1=4; (3) (a++) = a = 4; (4) 4*4 = 16, 得16;
(5)a=a+1=4+1=5 供后续语句使用。
追问
确实是15
int e1=3,e2=3,x,y;
x=(e1++)*(++e1);
y=(++e2)*(e2++);
System.out.println(""+"e1="+e1+"\t"+"x="+x+'\n'+"e2="+e2+'\t'+"y="+y);
*******************
e1=5 x=15
e2=5 y=16
GTA小鸡
高粉答主

2018-06-13 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
不要研究这类问题,其原理和编译器处理方式及生成的字节码有关。实际编程中不会出现这种代码,写出这种代码的人已经被开除了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式