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

有趣的++i和i++

时间:2016-01-16 23:55:48      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

  作为一个天天和代码“约会”的人来说i++和++i这玩意再熟悉不过了,因为使用频率太高了。

  虽然如此,但也未必见得我们真的了解她,不妨猜猜下面的输出结果。

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

 想要得出正确答案,仅仅知道前+和后+的区别是不够的,这里面有两个坑。

 第一个是cpu处理前+和后+真正的执行过程。

 第二个坑是printf这个“小妾”暗藏一腿。

 先把简单的第二个坑填了,以一般的思维和习惯会下意识的认为printf先计算前面那个表达式(即代码中的i[1] 和 j[1]),然后计算后面那个表达式的值(即  代码中的i[2]和j[2]),事实却正好相反,要先算后面再算前面。

 

有趣的++i和i++

标签:

原文地址:http://www.cnblogs.com/tid-think/p/5136574.html

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