关于左值,右值,前自增操作符,后自增操作符

原创 2012年03月26日 22:32:20

最近看了下c++ primer,不知道理解对不对~~

左值是可以出现在赋值语句的左边或右边,可以认为它不光有值,还有一个存储地址

右值是只能出现在赋值语句的右边,可以认为它只有一个值的大小,没有存储地址,只关心它的值

对应前自增和后自增操作符来讲

前自增操作符具有的左值性质,++i,它不仅返回i自增后的值,还返回i的存储单元地址

而后自增操作符具有的是右值性质,i++,它返回的只是i的原值,没有这个i的存储单元的地址

如下语句:

int i = 0;

++(i++);//这个语句编译会报错~因为i++返回的是个常量值,前自增不知道在哪个存储单元进行自增操作(i++)++也一样编译通不过,道理一样。

而(++i)++;//这个语句就能通过编译,因为++i还返回的i的存储地址,所以后自增知道是在哪个存储单元进行操作

int i = 0

cout << (++i)++ << endl;//输出结果为1

cout<< i << endl;//输出结果为2

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

赋值运算符、左值与右值

一、赋值运算符 C++的赋值运算符为“=“,其意义是将复赋值号右边的值送到左边变量所标识的内存单元中。 左操作数称为“左值”,必须放在内存中可以访问且可以合法修改值的存储单元中,通常只能是...

自增自减操作符在C与C++中的左值区别

今天网上看到一个华为的面试题目: 写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值 int a = 4; (A)a += (a++); (B) a += (++a) ;(...

C++自增操作符你真的懂?

虽然使用C++已经长达五年之久,但是对于C++的这个++却实在是一知半解。说来惭愧。 相信所有学过C++的人都知道++C于C++在运算符产生的效果上的异同。那么当一个表达式或者一个语句中出现两次同样的...

c++实现日期类(class Date) 构造函数 拷贝构造 操作符重载(输入输出 比较操作 算数运算 自增自减)

c++实现日期类(class Date) 构造函数 拷贝构造 操作符重载(输入输出 比较操作 算数运算 自增自减)

STL笔记(2)——仿函数、自增/减操作符等简介

仿函数、自增/减操作符等简介

JavaScript 操作符(算术/逻辑/比较/赋值运算符/优先级/自增自减/三目运算符)

1. 算术运算符 + (加):相加或连接 - (减)     *  (乘)  /  (除) % (取余) ( ) (提高优先级) 高级运算对象:Math(平方、立方、...

编译器能否优化后置自增操作符

如果你要让某个变量的值加1,可以用 i++;  也可以用++i; 通常,编码规范都建议我们如果考虑性能,这种情况下最好用前置自增,因为后置自增会多一次无用的复制操作。 但这种做法往往跟我们的习...

从头认识java-2.3 自增自减与关系操作符

这一章节我们来聊聊自增自减与关系操作符。1.自增自减其实没什么特别需要关注,只要把基础原理弄懂即可。package com.ray.ch03; public class Test { public...

C++ Primer 学习笔记_16_表达式 --算术、关系、逻辑、位、赋值、自增/自减操作符

表达式 --算术关系逻辑位赋值自增自减操作符 引正文 表达式 --算术、关系、逻辑、位、赋值、自增/自减操作符 引:    除了特殊用法,表达式的结果为右值:可以读取结果值,但是不能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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