鱼C论坛

 找回密码
 立即注册
查看: 3260|回复: 6

为什么 printf("\r\n %d, %d, %d", i, i++, ++i);//i=0;l 会输出2,1,2呢

[复制链接]
发表于 2021-3-3 21:42:01 | 显示全部楼层 |阅读模式

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

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

x
不上机的话,下面的程序分别会打印什么值你们可以搞清楚不,为什么呢?
        
        int i=0;
        printf("\r\n %d, %d, %d", i, i++, ++i);
        i=0;
        printf("\r\n %d", i);
        printf("\r\n %d", i++);
        printf("\r\n %d", ++i);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-3 21:59:47 | 显示全部楼层
printf("\r\n %d, %d, %d", i, i++, ++i);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-3 22:09:48 | 显示全部楼层
本帖最后由 乙冗 于 2021-3-3 22:21 编辑

先说下面的
        printf("\r\n %d", i);
        printf("\r\n %d", i++);
        printf("\r\n %d", ++i);
i++先将i返回给前面的式子,再加加,即输出0之后,i自增变成了1;
++i 先加加,把自增之后的值1返回给前面的式子;
(两者最后的结果都是自增1,只是时间不同)
printf("\r\n %d, %d, %d", i, i++, ++i);
【但是这个我运行之后是1,1,1我懵了。。。。】
百度有一个类似的写了
printf应该是从右往左执行的,++i先于printf执行,i++后于printf执行

这样的话,就是 先++i,i等于1,i++先把i值赋给前面输出,在printf执行完之后才++,但是之前已经输出了i,而此时i仍为1,输出结束后,i变为2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-4 08:38:35 | 显示全部楼层
乙冗 发表于 2021-3-3 22:09
先说下面的

i++先将i返回给前面的式子,再加加,即输出0之后,i自增变成了1;

单独只输出一个i的我理解,输出0,0,2;

但是下面的语句
printf("\r\n %d, %d, %d", i, i++, ++i);
输出2,1,2我就不太理解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-4 14:47:03 | 显示全部楼层
木子李工 发表于 2021-3-4 08:38
单独只输出一个i的我理解,输出0,0,2;

但是下面的语句

我也懵了,用vs运行就是2,1,2;
而vc6.0显示结果是1,1,1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-4 16:21:45 | 显示全部楼层
乙冗 发表于 2021-3-4 14:47
我也懵了,用vs运行就是2,1,2;
而vc6.0显示结果是1,1,1

在网上查了一番资料,大概是有以下几种原因
1.printf 格式化输出时,入栈顺序是从右往左输出的,
2.不同的编译器会有不同的结果
3.尽量避免写这种会有歧义的代码

参考:
1.https://cn.bing.com/search?q=printf(%22%25d%22%2C+i%2B%2B)%3B&PC=U316&FORM=CHROMN
2.https://blog.csdn.net/u014644714/article/details/77688321
3.https://bbs.csdn.net/topics/360083660
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-4 21:55:08 | 显示全部楼层
木子李工 发表于 2021-3-4 16:21
在网上查了一番资料,大概是有以下几种原因
1.printf 格式化输出时,入栈顺序是从右往左输出的,
2.不 ...

嗯嗯,一般就考试能碰到这种。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 11:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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