《C++语言入门经典》一2.8 左值与右值

2.8 左值与右值

C++中的每个语句、表达式的结果分为左值与右值两类。左值指的是内存中持续存储的数
据,而右值是指临时存储的结果。
在程序中,声明过的独立变量如:

Int k;
short p;
char a;
它们都是左值。又如:
Int a = 0;
Int b = 2;
Int c = 3;

a = c-b;
b = a++;
c = ++a;
c--;

c-b是一个存储表达式结果的临时数据,它的结果将被复制到a中,它是一个右值。a++自
增的过程实质上是一个临时变量执行了表达式,而a的值已经自增了。++a恰好相反,它是自增
之后的a,是一个左值。由此可见,c-是一个右值。
左值都可以出现在表达式等号的左边,所以称为左值。若表达式的结果不是一个左值,那
么表达式的值一定是个右值。

时间: 2024-11-08 19:18:56

《C++语言入门经典》一2.8 左值与右值的相关文章

《C++语言入门经典》一第2章 与计算机交流的手段——数据的计算、输入与输出2.1 C++语言基本要素

第2章 与计算机交流的手段--数据的计算.输入与输出 视频讲解:128分钟 通过鼠标.键盘等设备,我们可以将指令发送给计算机,而计算机会将执行结果显示出来.这就是输入与输出.输入设备的信号,显示器上体现的图形.文字,甚至喇叭发出的声音在计算机中的体现都是数据,它是计算机信息的载体. 通过学习本章,读者可以达到以下学习目的: C++语言的基本要素 数据类型 数据的输入与输出 运算符 结合性和优先级 表达式 语句.左值与右值 2.1 C++语言基本要素 通常程序设计语言的基本要素包括标识符.关键字.

《C++语言入门经典》一1.2 Visual Studio 2010 集成编译环境

1.2 Visual Studio 2010 集成编译环境 C++的开发环境有很多种,例如,常见的Visual C++ 6.0 等.Visual Studio 2010 是微软公司继Visual C++ 6.0 之后新设计的集成开发环境,它更加支持C++标准规范,对新标准--C++0x 提供全面的支持.下面就来介绍它的使用方法. 1.2.1 安装Visual Studio 2010 在安装Visual Studio 2010 之前,首先要了解安装Visual Studio 2010 的必备条件,

《C++语言入门经典》一导读

前 言 C++语言是在C语言的基础上发展起来的,它在C语言的基础上融合了许多新的有利于程序开发的编程理念.C++语言是一种规范,它规范了程序员如何进行面向对象的程序开发. C++语言还具有C语言底层操作的能力,同时具备高效率代码重用的面向对象技术.C++语言的特点是语句灵活.使用简洁.技术全面. 目前,关于C+ +语言的书籍有很多,但是真正从初学者的角度出发并把技术及应用讲解透彻的并不是很多.本书从初学者的角度出发,为想要学习C+ +编程.使用C+ +从事软件开发的初中级程序开发人员.编程爱好者

c++-关于函数参数左值与右值?

问题描述 关于函数参数左值与右值? 这里:string s1(""hi"")s2s3;s2=std::move(string(""bye""));//正确:从一个右值移动数据s3=std::move(s1);书上说:在s2中传递给move的实参是string的构造函数的右值结果--string(""bye"").那可不可以直接传递""bye"" 呢

c++中的左值与右值

转载自 http://www.cnblogs.com/catch/p/3500678.html 左值 (lvalue)和右值 (rvalue) 是 c/c++ 中一个比较晦涩基础的概念,有的人可能甚至没有听过,但这个概念到了 c++11 后却变得十分重要,它们是理解 move, forward 等新语义的基础. 左值右值的定义 左值与右值这两概念是从 c 中传承而来的,在 c 中,左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式)

左值、右值与右值引用

在C语言中,我们常常会提起左值(lvalue).右值(rvalue)这样的称呼.而在编译程序时,编译器有时也会在报出的错误信息中会包含 左值.右值的说法.不过左值.右值通常不是通过一个严谨的定义而为人所知的,大多数时候左右值的定义与其判别方法是一体的.一个最为典型的判别方法就是, 在赋值表达式中,出现在等号左边的就是"左值",而在等号右边的,则称为"右值".比如: a = b + c; 在这个赋值表达式中,a就是一个左值,而b + c则是一个右值.这种识别左值.右值

c++ 11 移动语义、std::move 左值、右值、将亡值、纯右值、右值引用

为什么要用移动语义 先看看下面的代码 // rvalue_reference.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> class HugeMem { public: HugeMem(int size) : sz(size) { pIntData = new int[sz]; } HugeMem(const HugeMem & h) : sz(h.sz) { pIntData =

《C++语言入门经典》一2.3 数据的输入与输出

2.3 数据的输入与输出 在用户与计算机交互的过程中,数据输入和数据输出是必不可少的操作过程,计算机需要通过输入获取来自用户的操作指令,并通过输出来显示操作结果.本节将介绍数据输入与输出的相关内容. 2.3.1 格式输出函数 C++语言中保留了C语言中的屏幕输出函数printf.使用printf可以将任意数量和类型的数据输出到屏幕.printf函数的作用是向终端(输出设备)输出若干任意类型的数据.printf函数的一般格式为:printf(格式控制,输出列表) 括号内包括格式控制和输出列表两部分

《C++语言入门经典》一2.5 结合性和优先级

2.5 结合性和优先级 运算符的优先级决定了表达式中的各个运算符执行的先后顺序.高优先级运算符要先于低优先级运算符进行运算.例如,根据先乘除后加减的原则,表达式"a+bc"会先计算bc,得到的结果再与a相加.在优先级相同的情况下,则按从左到右的顺序进行计算.当表达式中出现括号时,会改变优先级.先计算括号中的子表达式值,再计算整个表达式的值.运算符的结合方式有两种,即左结合和右结合.左结合表示运算符优先与其左边的标识符结合进行运算,如加法运算:右结合表示运算符优先与其右边的标识符结合,如