Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96733
  • 博文数量: 17
  • 博客积分: 366
  • 博客等级: 一等列兵
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-16 16:31
文章分类

全部博文(17)

文章存档

2011年(17)

我的朋友

分类: C/C++

2011-07-11 13:37:31

今天读一段代码想到一个有趣的问题。为什么自加操作符的优先级大于 =(包括构造),而用后加操作符赋值后的变量却是自增前得值呢?

int i =0;

int c =i++; //c=0;

int   fid =0;

Feature *feature = new Feature(fid++); //feature->fid() ==0;

看上面的几行代码,  编译器如何做到先执行了自增操作,赋值变量增加,而被赋值变量却没有被自增操作影响呢?

答案在于自加操作符的操作符三个字上,操作符可以被认为是一个函数,我们执行自加操作之后自加变量的值确实变了,但是该操作符的返回值却未必。对于前加操作它的行为与我们的预期一样,但是对于后加它却仍然返回自加前的变量值。这就从操作符这个角度的确能很好的理解自加操作变量的这种行为和实现原理。

阅读(1398) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~