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

i++与++i作为左值

时间:2014-11-16 17:24:58      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:io   ar   os   sp   数据   on   代码   bs   ad   

#include <iostream>
using namespace std;

int main()
{

 int i = 9;
 //i++ = 10; 
 ++i = 10;
 return 0;
}
/*
i++ 不可以作为左值;
++i 可以作为左值。

C++primer 中关于左值右值的说法:

 变量和文字常量都有存储区,并且有相关的类型。区别在于变量是可寻址的(addressable)对于每一个变量都有两个值与其相联:
 
 1).它的数据值,存储在某个内存地址中。有时这个值也被称为对象的右值(rvalue,读做are-value).我们也可认为右值的意思是被读取的值(read   value)。   文字常量和变量都可  被用作右值。  
 
 2).它的地址值——即存储数据值的那块内存的地址。它有时被称为变量的左值(lvalue,读作ell-value)。我们也可认为左值的意思是位置值location   value文字常量不能被用作左值
  
i++的实现代码:

  int temp;
  temp   =   i;
  i      =   i+1;
  return temp
++i的实现代码:
 i = i+1;
 return i;

  i++ = 10;错误是因为i++返回的是编译器自动分配的临时变量,而这个临时变量temp并不是你程序中定义的可寻址变量的引用,也就是不能作为左值。
  ++i = 10;因为其返回值就是i;

  上面也可以看出 ++i 的效率比 i++高


*/

i++与++i作为左值

标签:io   ar   os   sp   数据   on   代码   bs   ad   

原文地址:http://blog.csdn.net/djb100316878/article/details/41173297

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