虽然使用C++已经长达五年之久,但是对于C++的这个++却实在是一知半解。说来惭愧。 相信所有学过C++的人都知道++C于C++在运算符产生的效果上的异同。那么当一个表达式或者一个语句中出现两次同样的++会是什么样的表现呢?
例如int a=2; int b=(a++)*(a++)等于多少呢? 是4还是6还是8?
最简洁快速的办法就是写代码,让编译器告诉我们答案。于是构造了这么一段代码:
int _tmain(int argc, _TCHAR* argv[])
{
int a,b;
a = 2; b = 3;
int a1 = (a++)*(a++);
a = 2; b = 3;
int a2 = (++b)*(++b);
a = 2; b = 3;
int b1 = a++<<a++;
a = 2; b = 3;
int b2 = ++a<<++a;
a = 2; b = 3;
int c1 = (a++*b++,a++*b++);
a = 2; b = 3;
int c2 = (++a*++b,++a*++b);
a = 2; b = 3;
int d1 = (a++,++b)<<(a++,++b);
a = 2; b = 3;
int d2 = (a++,b++)<<(++a,++b);
a = 2; b = 3;
int d3 = (a++,b++)<<(++b,++a);
a = 2; b = 3;
int d4 = (b++,a++)<<(++a,++b);
printf("\na1:%d",a1);
printf("\na2:%d",a2);
printf("\nb1:%d",b1);
printf("\nb2:%d",b2);
printf("\nc1:%d",c1);
printf("\nc2:%d",c2);
printf("\nd1:%d",d1);
printf("\nd2:%d",d2);
printf("\nd3:%d",d3);
printf("\nd4:%d",d4);
return 0;
}