C++初级问题,关于增量运算符

来源:百度知道 编辑:UC知道 时间:2024/06/16 08:18:15
以下程序

#include<iostream>
using namespace std;
int main()
{
int iCounter=1;
iCounter=(iCounter++)+(iCounter++)+(iCounter++);
cout<<"第一次iCounter="<<iCounter<<endl;
iCounter=1;
iCounter=(++iCounter)+(++iCounter)+(++iCounter);
cout<<"第二次iCounter="<<iCounter<<endl;
iCounter=1;
iCounter=-iCounter++;
cout<<"第三次iCounter="<<iCounter<<endl;
return 0;
}

第二个iCounter为什么运行结果是10?最好能给3次的运算过程都给我说一下。。(*^__^*) 嘻嘻……
我用VC++6.0编译,依次是 6,10,0;跟你们的都不一样。。。

我用VC2005编译;
第一次运行结果为:6
解释:三个iCounter都为2时相加;

第二次运行结果为:12
解释:iCounter自加了三次变为4,然后三个iCounter相加等于12

第三次运行结果为:0
解释:iCounter自减了一次;

去google的网站百度一下``未定义行为''

第一次:6,icoun++,因有括号所以要先算
出来再相加,就是2+2+2=6
第二次:9,++ICOUNT,更不用说了,因为++是在前面,又有括号所以是2+2+2=6
第三次:1,icount++,因为++是在后面,要先赋值在自加

编译器有关系