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

2024-11-15 18:21:10
推荐回答(5个)
回答1:

a*=a++*++a 分解如下:
a*=++a*++a;
a=a*((a+1)*(a+1)) 把a的具体值代进去算就可以了。 因为开始等号右边的*号为最后的计算 所以CPU看到 a有两个数据 会把后一个数据赋给前一个a++数据(也就是后缀编程了前缀) 然后再进行 *号 计算。。

回答2:

这个等式具体运算过程有点复杂。
我把这个等式拆分开来解释,再说最终效果。
“a*=b”等同于“a=a*b”。
“a++”是先获得“a”的值去进行运算,再把“a”加1。
“++a”是先把“a”加1,再获得“a”的值去进行运算。
“a*=a++*++a”等同于“a=a*a*(a+1+1)”。

回答3:

这个运算是从右到左的,+=,-=,*=的意思分别是自加,自减,自乘
比如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:

a=a*(a++*++a)
假如开始a=1;
那么上式表示:
等号后面为:1*(1*3)
再赋给a、即a最后等于3

即++在后面表示先取值、再自增,++在前面表示先自增、再取值

回答5:

我是通过看考研视频看到了这个题,但是视频中是作业题 也没给详细解释!!!我也请教了很多人 查了很多资料 但是还是没结果!但是我用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 希望对后学者有帮助 也希望有人能给出自己的分析