#include<stdio.h> main() { int a=21 ,b=11; printf("%d\n",--a+b,--b+a); } 最后的输出结果为30 10

给解释下... 给解释下 展开
 我来答
以和为贵Eu
2011-09-11 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:139
采纳率:100%
帮助的人:38.8万
展开全部
凑个热闹啊也是初学者,输出语句中有个逗号运算符,逗号运算符直接要的是最后一个逗号后面的表达式的值(不管有多少逗号),程序先运行到--a+b,此时a=20。b=11.继续运行,--b+a.前缀--先自己-1然后再用。此时b=10.a=20.所以结果为30。希望被采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
75萍
2011-09-15
知道答主
回答量:37
采纳率:0%
帮助的人:25.9万
展开全部
在printf函数中,求值顺序是从右到左的,如 k=1;printf(''%d,%d\n'',k,k++) 运行结果是2,1
所以,,执行--b+a后,b=10,--a=20,所以输出结果是30
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
睡不着想你了
2011-09-10 · TA获得超过524个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:296万
展开全部
你好,像这种输出的话我们一般以最后一个与前面的%d对应,而为什么结果输出是30呢,我给你分析下: 首先 --a+b 在这里虽然没有输出结果,但它影响了a的值,因为--a使得a自身减少了1,也就是 a=20, 第二个输出就是我们要输出的那个结果了 --b+a 中 b先自减1 得 b=10 ,而a在前面已经减为 20 了,所以最后结果是 --b+a=20+10=30.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戏雨南s8
2011-09-10 · TA获得超过504个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:287万
展开全部
printf("%d\n",--a+b,--b+a); }这句是个逗号运算,取后面的值.....但是前面的--a+b也是要运行的,运行了--a后a=20啦!!在运行后面的--b,b就等于10啦!!加起来就等于30.了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
2011-09-10 · TA获得超过7293个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3950万
展开全部
首先看--a+b,a先自减1,因此a = 20
记着看--b+a,b先自减1,因此b = 10
然后在计算a + b = 20 + 10 = 30

所以程序可以理解为
--a;
--b;
printf("%d\n",a+b,b+a);
由于只输出一个a + b,因此输出结果为30
不懂可再追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式