int a=023;printf(“%d\n”,--a,a--)输出的结果是多少,求具体想法

 我来答
White_MouseYBZ
推荐于2018-04-21 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6474万
展开全部
输出结果应该是18。
因为,a=023是八进制,即十进制19。printf("%d\n",--a,a--)的控制符却是要求用十进制输出的,即要把023换算成十进制再经--运算最后输出。printf("%d\n",--a,a--)是从右向左来计算要输出的变量列表的,本题中先计算a--,再计算--a。但是a--是后置减1符,输出前并不将a从19变为18;而再计算--a时,因为其是前置减1符要先减1,即a将从19先变为18再输出。这里还有一点要注意:那就是printf("%d\n",--a,a--)的格式控制符只有一个%d,就是说后面的输出变量表中的两个变量只输出1个值;那么,输出哪一个呢?是--a还是a--呢?答案是--a——因为虽然printf函数的变量表是从右至左计算的,但输出时却是从最左端对应输出的,就是说一个%d对应--a而不是a--。本题若把printf("%d\n",--a,a--)改为printf("%d %d\n",--a,a--),那就会输出18 19……当然,或许还与编译器有关,因为C/C++的编译器太多。
adoqq_bd
2012-06-17 · TA获得超过7050个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1598万
展开全部
输出17
输出结果应该是17, printf函数的参数求值次序是从右往左的,也就是先执行a--,再执行--a, 那输出就是17 ,如果是printf(“%d\n”,a--,--a),那就是18
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-06-17
展开全部
18
a=023;0表示8进制,即19,printf先执行--a=18,a--在printf语句后面。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式