分类：电脑/网络-程序设计-C/C++
问题：问个C语言程序输出题#include&lt;stdio.h&gt 
#include <std.h>main(){int i j;i=16;j=(i++)+i;printf("%d\t",j);i=15;printf("%d\t%d",++i,i);}输出结果为什么是32 16 15特别第一个32怎么来的?我以为是34,请解释详细点,我是菜鸟,自学C语言
回答：楼主,自学的话是需要一些指点的.我建议你去 ,哪里什么编程问题都可以解决.

你的这个问题我给你解答一下:

1.i++的意思是i的值先被引用然后再自加1,++i的意思是,i的值先加1,然后再被引用.

所以,j=(i++)+i中,i的值16先被引用参加了加法,也就是j=16+16,然后i的值再加1.

如果是j=(++i)+i的话,那么最后j就等于34了.

2.另外还有一个有趣的现象不知道楼主主要了没有.就是在i等于15的情况下,
  printf("%d\t%d",++i,i);输出的是,16,15

那么这里对于i来说,的确是先加1的,可是呢.printf这个函数是从右到左来运算的,它先计算的是i,是15,然后计算出++i,是16.所以输出了16和15.