码迷,mamicode.com
首页 > 其他好文 > 详细

关于C的自增运算符

时间:2017-05-11 10:16:48      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:std   turn   code   一段   运算   ++   int   求值   class   

先看下边的一段代码

 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的自增运算符

标签:std   turn   code   一段   运算   ++   int   求值   class   

原文地址:http://www.cnblogs.com/zardfans/p/6839249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!