自增自减运算符剖析

首先简单概括一下自增自减运算符,数字在运算符之前表示先运算后使用,数字在运算符之后表示先用后运算。

举例说明:

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相加。

原文地址:https://www.cnblogs.com/huxianlu/p/3343858.html