ybyc 发表于 2015-1-31 14:34:50

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

架向青空 发表于 2015-1-31 14:51:12

q不是21?

mhhnjuol 发表于 2015-1-31 16:06:00

首先,程序执行结果为q=24,这是VS2012报的结果,请楼主测试输出是否正确。
然后根据反汇编结果,i的那个式子先执行加法,将3个5相加,在执行三条i++指令
而j的式子先将三条++j执行,j变为8,在进行三个j的加法,结果为24,
如有疑问,可能是编译器不同的问题,这是VS编译器的结果

aswyamato1989 发表于 2015-1-31 21:03:44

跟编译器相关,不同的编译器计算结果是不一样的

神释 发表于 2015-1-31 21:33:06

跟编译器相关,不同的编译器计算结果是不一样的


vc++6.0 和vs2012和13什么的结果不一样
页: [1]
查看完整版本: i++和++i