鱼C论坛

 找回密码
 立即注册
查看: 1913|回复: 3

[已解决]自增自减问题

[复制链接]
发表于 2017-9-8 11:35:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int i=8;
        printf("%4d%4d%4d%4d%4d%4d%4d\n",++i,--i,i++,i--,-i++,-i--,i);
}
测试代码是上面这个,输出的是 8 7 8 8 -8 -8 8
但是如果将上面的printf拆分成多个在输出结果就变成了9 8 8 9 -8 -9,
求助各位大佬这是为什么啊。
最佳答案
2017-9-8 14:58:29
printf输出打印从后往前解析,所以先解析i,再解析-i--,记住i--,先使用i,i再自减,而在printf这条语句的“一个整体”中。i自减和自加的操作会在“一个整体”之后执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-8 11:42:42 | 显示全部楼层
i++ 这类全部在下条语句生效。
++i 这类立即生效。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-8 14:58:29 | 显示全部楼层    本楼为最佳答案   
printf输出打印从后往前解析,所以先解析i,再解析-i--,记住i--,先使用i,i再自减,而在printf这条语句的“一个整体”中。i自减和自加的操作会在“一个整体”之后执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-8 16:41:09 | 显示全部楼层
因为这个与printf的格式输入和输出有关系,它是按照顺序的。
人的主观意识认为它是独立的,意思是说,你以为--i是从i=8开始的,其实是i=9,再--i=8的,后面的以此类推。
希望得到最佳答案,嘿嘿。我之前也是弄不明白,现在懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 15:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表