以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",- -a+b,- -b+a); } 求解,万分感谢

 我来答
lyozning1219
推荐于2018-02-28 · TA获得超过462个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:216万
展开全部
输出结果:30
原理:
1.C语言的运行顺序大多都是自右向左(但是少数C语言编译软件的输出结果为31,它的运行顺序是自左向右,这里以VC++ 6.0为例说明输出30的原因)。
2.先运行--b+a,根据运算顺序知道相当于(--b)+a,b先自减,即b=10,此表达式--b+a的值为31.
3.然后运行- -a+b,相当于(--a)+b,a先自减,即a=20,此表达式- -a+b的值20+10=30。
4.printf("%d\n",- -a+b,- -b+a); 输出第一个表达式的值,(printf函数输出顺序是自左向右)。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ray527
2011-12-28 · TA获得超过302个赞
知道答主
回答量:184
采纳率:0%
帮助的人:152万
展开全部
printf 为什么参数里只有一个%d ??后面却有两个变量??

如果是printf("%d\n%d",- -a+b,- -b+a)的话输出应该是
30
31

系统先执行了 --b+a的,所以--b+a=31;
然后再执行 --a+b,那时候b已经被减1了,所以--a+b=30。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微界度玺0E
2011-12-28 · TA获得超过105个赞
知道答主
回答量:56
采纳率:100%
帮助的人:49.5万
展开全部
先生 为什么参数列表有两个 而你的占位符只有一个 %d
如果你手误的话那么有两个占位符 答案是 30

31
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
树礼梨m
2011-12-28 · TA获得超过417个赞
知道小有建树答主
回答量:926
采纳率:75%
帮助的人:135万
展开全部
- -a+b即为(--a)先计算得20,然后接着计算(--a)+b为20+11+31;
--b+a即为(--b)先计算得10,然后接着计算(--b)+a为10+20=30;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjhxmjl
2011-12-28 · TA获得超过1078个赞
知道小有建树答主
回答量:1203
采纳率:0%
帮助的人:796万
展开全部
错误,没有结果,warning: operation on ‘a’,'b' may be undefined
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式