int a=023;printf(“%d\n”,--a,a--)输出的结果是多少,求具体想法
3个回答
展开全部
输出结果应该是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++的编译器太多。
因为,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++的编译器太多。
展开全部
输出17
输出结果应该是17, printf函数的参数求值次序是从右往左的,也就是先执行a--,再执行--a, 那输出就是17 ,如果是printf(“%d\n”,a--,--a),那就是18
输出结果应该是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语句后面。
a=023;0表示8进制,即19,printf先执行--a=18,a--在printf语句后面。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |