永发信息网

这个程序怎么理解?

答案:2  悬赏:50  手机版
解决时间 2021-03-19 17:06
这个程序怎么理解?
最佳答案
实际上就是直接展开成(++n)*(++n)*(++n)
你可以试试,(++n)*n=36, (++n)*(++n)=49
显然,这个结果跟我们理解的不一样。
我只能说,这跟编译器的实现有关,不建议用这种语法挑战编译器的上限。
全部回答
编译时对s=CUBE(++n);宏扩展为s=(++n*++n*++n);。对这种边缘化语句目前的编译器常见两处理方案:一种是先将前两个表达式++n*++n算出来存放在一个临时变量中比如y,由于前++要在参与运算前计算,所以y=7*7==49;然后将后面的表达式再与y计算得y*++n==49*8==392——这就是题目提供的答案。另一种是先将表达式中的前++或--都做完,再从左至右用运算符操作计算结果;比如这里就是先将3个++n做完使n==8,再计算8*8*8==512。显然题目提供的是前一种计算方法,我的编译器也是前一种方法。由于C/C++没有提供处理这种边缘化语句的具体要求,所以两种(或许还有其他方法)方法都是合法的,故为了代码移植可靠,不提倡写这种语句。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
塔防三国志招贤活动时顶级招贤打多少折
红色小屋旺旺便利店地址在哪,我要去那里办事
汽车税是怎么算的
内蒙古海拉尔到南京快递多少钱,几天能到,寄
祖安狂人怎样打
白浩的名字是什么意思
375马力发动机为什老温度高?
单选题酸溶液的pH一定A.大于7B.小于7C.等于7D
与世长什么
河北大学研究生住宿还是网上自主选房吗
创维电视机34T68HD突然无声按动音量按键后又
历史上有陆贞吗?
为什么π的2ei方=1
合肥能租公交车吗
山东植物病理学会在什么地方啊,我要过去处理
推荐资讯
第三种爱情里面的刘亦菲穿的白衬衣是什么牌子
科目一每次考只能考七十分至八十多分.怎么办
求银魂hata王子的出场音乐(呀~~呼~~噜~~)
老鸽子养多久能放飞
家具品牌排行榜十强品牌有哪些?
萧山老城区衣服修改?
汉兰达后窗玻璃喷水开关在哪?
水坡坑在哪里啊,我有事要去这个地方
求“贷款结清证明”格式
重庆哪里有餐饮桌椅批发市场,或者二手餐饮家
求助: 我的ps3开机显示“硬盘文件已损坏,请修
淘宝售后信息怎么删除
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?