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 展开
{
int i 8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
为什么输出结果为8 7 8 8 展开
6个回答
展开全部
给你说下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
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
展开全部
结果是语法里面未定义的, 输出什么是编译器决定的。 不要这样写就可以了, 任何解释都没意义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
括号运算符内从右到左运算
i++,i--要整个括号运算完了才递加,递减的(可能这是你不清楚的关键)
++i,--i当然直接就递加,递减了
i++,i--要整个括号运算完了才递加,递减的(可能这是你不清楚的关键)
++i,--i当然直接就递加,递减了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种东西就不应该出现,(偏偏考试中常出现这种一点价值都没有的玩意),楼上说的对,任何解释都没有意义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf的输出顺序是从右到左的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int i 8; 中间的=号呢
应该是9788
应该是9788
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询