【求助】C语言中的一个问题
大家好,刚刚开始学习C语言,很新的新手,在这问大家一个可能很弱智的问题,我在一本书上看到一个程序,如下:#include<stdio.h>
main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(++i);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d\n",p,q,i,j);
}
书上说这个程序输出的结果是:18,24,8,8。书上的解释是:对于p=(i++)+(i++)+(++i);语句,其中有一个前缀,先执行一个前缀,得i=6,返回三个i相加之和,故p为18,再执行两个后缀,得i=8;对于q=(++j)+(++j)+(++j);语句,有三个前缀,无后缀,先执行三个前缀,得j=8,返回三个j相加之和,故q为24.
但是我用VC6.0编译出来的结果是:16,22,8,8。不知道为什么会出现这样的差异,求各位前辈帮帮我。谢谢