第2个回答 2020-05-03
这个运算是从右到左的,+=,-=,*=的意思分别是自加,自减,自乘
比如a+=a的意思就是a=a+a,同理,a-=a就是a=a-a,a*=a就是a=a*a
a+=a-=a*=a的运算顺序就是
1.a*=a,即a=a*a
2.a-=a,即a=a-a
3.a+=a,即a=a+a
第4个回答 2018-06-15
我是通过看考研视频看到了这个题,但是视频中是作业题 也没给详细解释!!!我也请教了很多人 查了很多资料 但是还是没结果!但是我用java运行了这个得到结果后 我就感觉找到了答案 也不知道是对是错 希望对学者有所帮助!!!!
在java中 int a=3; a*=a++*++a的结果是 45 运行后a的结果是45 a*=++a*a++的结果是48
运行后a结果是48 我们从左到右分析 发现这个结果是可以理解的
但是在c中 上面两个式子 的结果都是 64 运行后a的值都是65
分析java和c java底层是用c开发的 运行效率肯定没c快 我觉得 在c中由于这个表达式运行太快了 基本 a++ ++a 同时跑 此时a的值肯定是4(由于++a) 运行后a会+1(a++) 这样的话表达式的值就a*a*a也就是64 运行后a再加1也就是65 希望对后学者有帮助 也希望有人能给出自己的分析