i++和++i
#include "stdio.h"#include <iostream>
int main(void)
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("i=%d,j=%d,p=%d,q=%d\n",i,j,p,q);
system("pause");
return 0;
}
程序输出结果是:i=8.j=8,p=15,q=22
不是太理解,请大家帮忙看看,特别是最后的q
q不是21? 首先,程序执行结果为q=24,这是VS2012报的结果,请楼主测试输出是否正确。
然后根据反汇编结果,i的那个式子先执行加法,将3个5相加,在执行三条i++指令
而j的式子先将三条++j执行,j变为8,在进行三个j的加法,结果为24,
如有疑问,可能是编译器不同的问题,这是VS编译器的结果 跟编译器相关,不同的编译器计算结果是不一样的 跟编译器相关,不同的编译器计算结果是不一样的
vc++6.0 和vs2012和13什么的结果不一样
页:
[1]