关于i++和++i的计算

来源:百度知道 编辑:UC知道 时间:2024/06/27 11:04:33
main()
{ int i=3,m ;
m=(i++)+(++i)+(++i)+(++i)+(i++);
printf("\n%d ",m);
}
运行是结果是:30 请问是怎么个算法?

i++就是语句执行完毕以后补做一个i=i+1的赋值,++i就是在语句执行之前执行一个i=i+1语句,这是所有C语言的标准,不存在不通编译器不同结果的可能。

依照上面说的原则,语句m=(i++)+(++i)+(++i)+(++i)+(i++); 相当于如下系列语句,完全等效:
++i;/*执行此语句后i=4*/
++i;/*执行此语句后i=5*/
++i;/*执行此语句后i=6*/
m=(i)+(i)+(i)+(i)+(i); /*执行此语句后i=6,m=30*/
i++;/*执行此语句后i=7*/
i++;/*执行此语句后i=8*/

的确,i++就是语句执行完毕以后补做一个i=i+1的赋值,++i就是在语句执行之前执行一个i=i+1语句。
i++结果为3,之后加1,i为4
++i在4的基础上加1,结果为5,
++i用5加1,结果为6;
++i用6加1,结果为7;
i++首先不做运算,结果为7;
3+5+6+7+7=28。

不要用这种表达式,不同的编译器,会计算出不同结果,Cfree 和devc的结果就不一样,有的是在计算过程中逐一加一,有的是一次就加到位.然后才计算表达式

这是个C++语言啊。。虽然不是很熟悉。。但是好象 i++就是i+i的意思。。。

比较复杂的计算机语言

为什么microsoft visual c++编辑出来时25,而我计算出来是28?求解答额,谢谢