左值与右值

转载 2007年10月03日 12:10:00

本文摘自:http://jiang5005.spaces.live.com/blog/cns!619F3DE8AB99988E!111.entry?action=post&wa=wsignin1.0

8月20日 C++中的左值和右值

C++中的左值和右值

1.  概念
变量和文字常量都有存储区,并且有相关的类型,区别在于变量是可寻址的;
 
对于每个变量,都有2个值与其相关联:
1>数据值,存储在某个内存地址中,也称右值(rvalue),右值是被读取的值(read value),文字常量和变量都可被用于右值。
2>地址值,即存储数据值的那块内存地址,也称左值(lvalue),文字常量不能被用作左值。
 
2 . 问题
给表达式加上括号: ++a--
结果 ++(a--)
 
这个表达式是非法的,因为前增量操作要求一个可修改的左值,而 "a--" 不是左值(即右值)
 
3 . 前增量和后增量的区别
早期的c语言教材,for循环语句通常写成:
for(int i=0;i<10;i++)
而现在多为:
for(int i=0;i<10;++i)
 
两者有区别吗?
 
a++ 即是返回 a的值,然后变量 a 加 1,返回需要产生一个临时变量类似于
{
       int temp = a;
       a=a+1;
       return temp;  //返回右值
}
 
++a 则为:
{
    a=a+1;
    return &a;    //返回左值
}
 
显然,前增量不需要中间变量,效率更高。

左值与右值的区别

左值跟右值的区别
  • u010317005
  • u010317005
  • 2016年08月22日 00:29
  • 580

C++11左值右值、转移语义

首先看一下c++11标准新特性: 右值引用: 右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语...
  • fffupeng
  • fffupeng
  • 2016年09月20日 15:17
  • 636

指针/地址 到底是左值还是右值

一下引用网友:lm_whales左值可以当作右值使用,右值不能当左值用. 左值可以出现在=的任何一方, 出现在=右方的左值,是把左值当作右值使用,这是非常正常的.右值,不能当作左值使用. 能够(...
  • qq_24964575
  • qq_24964575
  • 2016年08月14日 09:05
  • 962

a++ ++a 左值 右值

the   following   may   help   determine   wheter   an   object   is   a   lvalue   or   rvalue:   i...
  • fivedoumi
  • fivedoumi
  • 2012年10月15日 21:58
  • 989

C++11 左值、右值、右值引用详解

左值、右值在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。...
  • u010599509
  • u010599509
  • 2016年07月27日 13:27
  • 5686

C语言中左值与右值

声明:本文转自 http://blog.csdn.net/qikaibinglan/article/details/6203483 如果有侵犯他人版权,请通知我我会马上删除     左值就是在赋...
  • Leichelle
  • Leichelle
  • 2011年11月05日 19:44
  • 8520

C和指针(二)指针与左值、右值详解

c语言中左值、右值定义:例子:a = b + 25; 左值:能够出现在赋值符号左侧的东西。例子中a, 右值:能够出现在赋值符号右侧的东西。例子中b + 25 上面的例子可以写成这样吗? b + 25...
  • u014656992
  • u014656992
  • 2015年11月16日 11:30
  • 1958

重载中碰到的左值和右值问题

double & Student::operator[ ] (int i) {         return scores[i];  } double Student::operator[ ]...
  • mjcheng8879
  • mjcheng8879
  • 2015年10月20日 09:07
  • 335

C++11之左值、纯右值和将亡值

在C++11中所有的值一定属于左值、纯右值和将亡值三种值之一,分别介绍一下这三种类型。左值与右值在C++中定义左值与右值的比较标准的方法是根据其可以取地址来判断。左值就是可以对变量进行取地址或者有名字...
  • StephenZou14
  • StephenZou14
  • 2017年09月03日 12:33
  • 288

C++ 11 左值,右值,左值引用,右值引用,std::move, std::foward

C++11, 右值引用,move, forward
  • xiaolewennofollow
  • xiaolewennofollow
  • 2016年09月16日 23:59
  • 1229
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:左值与右值
举报原因:
原因补充:

(最多只允许输入30个字)