C语言 自加自减以及printf函数问题

main(){inti8;printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);}为什么输出结果为8788... main()
{
int i 8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
为什么输出结果为8 7 8 8
展开
 我来答
11623222
2011-10-08 · TA获得超过529个赞
知道小有建树答主
回答量:517
采纳率:0%
帮助的人:402万
展开全部
给你说下2楼的意思吧...
i++和i--的意思你应该知道吧,是使用完i之后才进行自增和自减的运算,而括号内的所有运算都结束之后才认为i使用完....
也就是说....你当你的printf语句结束之后,i的自增和自减运算才完成...
而++i和--i是先进行自增和自减运算...
而运算是从右边开始
结果如下...
i-- 第4个%d是8 因为要国号内全部运算结束i的值才会变化
i++ 第3个%d也是8 同上
--i 第2个%d是7 这个要先减 所以是7
++i第一个%d是8 这个要先加 所以是8
vbtraz
2011-10-08 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4458万
展开全部
结果是语法里面未定义的, 输出什么是编译器决定的。 不要这样写就可以了, 任何解释都没意义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
itishl
2011-10-08 · 超过11用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:20万
展开全部
括号运算符内从右到左运算
i++,i--要整个括号运算完了才递加,递减的(可能这是你不清楚的关键)
++i,--i当然直接就递加,递减了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adoqq_bd
2011-10-08 · TA获得超过7050个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1628万
展开全部
这种东西就不应该出现,(偏偏考试中常出现这种一点价值都没有的玩意),楼上说的对,任何解释都没有意义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
羿烃Hy
2011-10-08 · TA获得超过145个赞
知道答主
回答量:240
采纳率:0%
帮助的人:232万
展开全部
printf的输出顺序是从右到左的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
569372985
2011-10-08 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:81.2万
展开全部
int i 8; 中间的=号呢
应该是9788
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式