鱼C论坛

 找回密码
 立即注册
查看: 2189|回复: 7

[技术交流] C语言中标准输出格式

[复制链接]
发表于 2014-6-3 09:47:20 | 显示全部楼层 |阅读模式
1鱼币
void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
}


void main()
{
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
这两段代码输出结果为什么不一样?特别的第一段代码怎么理解,求大神指教,不胜感激!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-3 09:50:43 | 显示全部楼层
这个和编译器有关, 你用反汇编功能看下汇编代码,对比下两段代码就很清楚了。 小甲鱼老师视频有教哈:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-3 10:02:19 | 显示全部楼层

第一段代码还是不是很理解,求解释。该怎么正确理解才能和运行结果一样?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-3 12:27:33 | 显示全部楼层
第一段程序的计算顺序:首先是从右向左计算:)其二,后缀运算符全是先输出再加或减,前缀是先加减再输出,",++i,--i,i++,i--,-i++,-i--);
所以,从右向左i++,i--,-i++,-i--);这几个输出就是8,8,-8,-8,然后到,--i,是先减所以是7,然后到",++i是先加,由刚才的7加1又得到又是8,所以最终结果是: 8, 7,8 ,8 -8 ,-8 ,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-4 10:54:27 | 显示全部楼层
恩恩!不同的编译器结果是不一样的,建议你反汇编看一下,这样的话,就清楚了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-5 21:19:38 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-5 21:48:18 | 显示全部楼层
printf是右结合的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-10 11:53:37 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 05:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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