a*=a++*++a这个c语言表达式是怎么算的?

 我来答
匿名用户
2012-12-05
展开全部
a*=a++*++a 分解如下:
a*=++a*++a;
a=a*((a+1)*(a+1)) 把a的具体值代进去算就可以了。 因为开始等号右边的*号为最后的计算 所以CPU看到 a有两个数据 会把后一个数据赋给前一个a++数据(也就是后缀编程了前缀) 然后再进行 *号 计算。。
数学之星
推荐于2017-11-25 · TA获得超过451个赞
知道小有建树答主
回答量:230
采纳率:0%
帮助的人:140万
展开全部
这个等式具体运算过程有点复杂。
我把这个等式拆分开来解释,再说最终效果。
“a*=b”等同于“a=a*b”。
“a++”是先获得“a”的值去进行运算,再把“a”加1。
“++a”是先把“a”加1,再获得“a”的值去进行运算。
“a*=a++*++a”等同于“a=a*a*(a+1+1)”。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独日律勇
2020-05-03 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:36%
帮助的人:656万
展开全部
这个运算是从右到左的,+=,-=,*=的意思分别是自加,自减,自乘
比如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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一个书包的距离
2012-12-05
知道答主
回答量:22
采纳率:0%
帮助的人:8.3万
展开全部
a=a*(a++*++a)
假如开始a=1;
那么上式表示:
等号后面为:1*(1*3)
再赋给a、即a最后等于3

即++在后面表示先取值、再自增,++在前面表示先自增、再取值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MRU1987刘
2018-06-15 · 超过34用户采纳过TA的回答
知道答主
回答量:199
采纳率:25%
帮助的人:49.3万
引用数学之星的回答:
这个等式具体运算过程有点复杂。
我把这个等式拆分开来解释,再说最终效果。
“a*=b”等同于“a=a*b”。
“a++”是先获得“a”的值去进行运算,再把“a”加1。
“++a”是先把“a”加1,再获得“a”的值去进行运算。
“a*=a++*++a”等同于“a=a*a*(a+1+1)”。
展开全部
我是通过看考研视频看到了这个题,但是视频中是作业题 也没给详细解释!!!我也请教了很多人 查了很多资料 但是还是没结果!但是我用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 希望对后学者有帮助 也希望有人能给出自己的分析
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式