永发信息网

一道编程问题,请教高手

答案:4  悬赏:10  手机版
解决时间 2021-07-29 17:42

#include"stdio.h"

main()

{

int a=1,b=2;

b+=++a*++a;

printf("%d",b);

}

这段代码的运行结果为什么是11,要具体分析!谢谢!

最佳答案

对a进行了两次前缀++操作,*号左边++a后a=2,但这并是说*号左边一定是2,因为a是个变量,它的值在*号这个双目运算符(自左至右结合性)左右两边都有值之前可能产生变动(如代码中所示),一旦*号这个双目运算符(自左至右结合性)左右两边都有值时,*法运算执行,这时a经过两次++得a=3,所以b=2+3*3=11。


根据*号这个双目运算符(自左至右结合性)左右两边都有值时乘法运算执行这个性质,扩展代码:


int a=1,b=2;


b+=++a*++a*++a;


printf("%d",b);


结果是b=38,计算过程是b=2+3*3*4=38

全部回答

++的优先级高于*

b+=++a*++a;相当于b=b+((++a)*(++a));

由两次++a,a的值变成3

b=2+3*3.

++比*高级,所以先运算++

b+=++a*++a;相当于

++a;(a=2)

++a; (a=3)

b+=a*a;

a在被*之前自己加了两次,从1变成了3
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我的一个QQ密保丢了现在登不上去 QQ密码保护
他中文说的很好,而且他还帮助我学英文,我们在
芙蓉区长沙大禹神工防水(马王堆店)地址是什么
我家玩CF进游戏一半就掉到大厅
黑糖玛奇朵 所有歌曲
说英语用英语怎么说,我们是工厂,价格是很有
是不是处女真的有那么重要吗?现在最热门的话
如果我喜欢上了一个人,怎么办
德州百货大楼进场费是多少啊
石峰区株洲Hi TEA地址在哪,我要去那里
粉色怎么调色,怎么调色才能得到粉红色?
怎么兑换QQ里的Q豆啊?
如果一个人在马路上碰到一部车子失空给幢了那
为什么人与人那么难相处、为什麽这世上上那么
腋下脱毛要做多少次?要多少钱?
推荐资讯
看云识天气所有句子的说明方法
魏都区许昌滇南小馆这个地址在什么地方,我要
濮阳县濮阳陈庄村电商服务点在什么地方啊,我
09年正版LV包的图片谁有啊?
英语口语三级考试是什么时候?考的教材名称具
分手了,怎样才能彻底忘记他?
我们准备结婚了,希望哪位大师能帮忙算算八字
辰溪县怀化k歌之王这个地址怎么能查询到,着
赫山区益阳金海商务宾馆(海棠路)哪位知道具体
热升华打印机能够使用普通相片纸吗?
婴儿的身体里大概有几块骨头?
怎样预防甲流呀?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?