首页 > 代码库 > 关于C的自增运算符

关于C的自增运算符

先看下边的一段代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i=3,j,k;
 5     
 6     j=i++;
 7     k=++i;
 8     printf("i=%d,j=%d,k=%d\n",i,j,k);
 9     printf("%d\n",-i++);
10     printf("%d,%d,%d,i,i++,i++);
11     return 0;
12 }

前两个输出函数应该比较简单,但是第三个输出函数输出的是:

8,7,6

不应该是6,7,8吗?

看了书上的解释,printf中,i,i++,i++的求值比较特殊,它是从右往左求值的。也就是先求最右边的i++,此时先引用的i的值为6,之后i的值变为7,然后是中间的i++,先引用i的值7,然后把i的值加1使之变为8,最后是左边的i,此时i的值是8.

关于C的自增运算符