在一个表达式中,无论i++和++i出现的次数,顺序如何,也无论+-*/的混合运算如何,都遵循如下规则:
1. 所有的i++和++i的值都相等为A。
2. A等于执行所有++i后,i的值。
原因是编译如此工作:
1.找到所有的++i,执行
2然后找到所有的i++,执行
3计算表达式。
int i = 3;
int i,a;
i=3;
a = (++i)+(i++)+(++i)+(i++); 5+5+5+5=20
printf("a=%d /n",a);
i=3;
a = (i++)+(++i)+(i++); 4+4+4=12
printf("a=%d /n",a);
i=3;
a = (++i)*(i++)*(++i); 5*5*5=125
printf("a=%d /n",a);
i=3;
a = (i++)+(++i); 4+4=16
printf("a=%d /n",a);
i=3;
a = (++i)+(i++)*(++i)*(i++)*(i++);5+5*5*5*5=630
printf("a=%d /n",a);
以上程序在vs2008,控制台程序中经过验证。
本文深入探讨了C++语言中++i和i++运算符的执行顺序和结果,通过具体示例展示了它们在表达式中的应用及其对最终结果的影响。详细分析了编译器的工作流程,解释了为什么不同的运算符顺序会导致不同的计算结果。
2188

被折叠的 条评论
为什么被折叠?



