小小蜗牛 发表于 2014-6-3 09:47:20

C语言中标准输出格式

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--);
}这两段代码输出结果为什么不一样?特别的第一段代码怎么理解,求大神指教,不胜感激!

txt888 发表于 2014-6-3 09:50:43

这个和编译器有关, 你用反汇编功能看下汇编代码,对比下两段代码就很清楚了。 小甲鱼老师视频有教哈:lol:

小小蜗牛 发表于 2014-6-3 10:02:19

txt888 发表于 2014-6-3 09:50 static/image/common/back.gif
这个和编译器有关, 你用反汇编功能看下汇编代码,对比下两段代码就很清楚了。 小甲鱼老师视频有教哈

第一段代码还是不是很理解,求解释。该怎么正确理解才能和运行结果一样?

眨眼一瞬间 发表于 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 ,

青玄 发表于 2014-6-4 10:54:27

恩恩!不同的编译器结果是不一样的,建议你反汇编看一下,这样的话,就清楚了!

牡丹花下死做鬼 发表于 2014-6-5 21:19:38

答案   建议看看

kakadeyisheng 发表于 2014-6-5 21:48:18

printf是右结合的

阔怀 发表于 2015-8-10 11:53:37

{:1_1:}
页: [1]
查看完整版本: C语言中标准输出格式