首先简单概括一下自增自减运算符,数字在运算符之前表示先运算后使用,数字在运算符之后表示先用后运算。
举例说明:
1 int i = 1; 2 int j = 1; 3 int a = ++i; 4 int b = j++;
输出结果是:
a = 2, b = 1, i = 2, j = 2;
其实这也不是很难的问题,主要是理解就好!
咱们就再看看一个难一点的:
1 #include <stdio.h>
2 void main()
{
3 int a,b,c,d;
4 a=1; 5 b=1; 6 c=(a++)+(a++); 7 d=(++b)+(++b); 8 printf("a=%d,b=%d,c=%d,d=%d ",a,b,c,d); 9 }
猜猜结果…………
再看看以下结果: a = 3, b =3, c= 2,d =6.
如果你算错了,那就再回去看看吧!
咱们接着再看看:
1 #include <stdio.h> 2 void main() 3 { 4 int a,b,c,d; 5 a=1; 6 b=1; 7 c=(a++)+(a++)+(a++)+(a++); 8 d=(++b)+(++b)+(++b)+(++b); 9 printf("a=%d,b=%d,c=%d,d=%d ",a,b,c,d); 10 }
猜一猜,再看看结果:
嗯,这是为什么呢?这就是结合性的问题了,,因为存在两个同级的+运算,根据+运算符的左结合性,在编译时,其实是先处理前面的(++b + ++b)这部分,然后再将此结果再和++b相加。