关闭

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

标签: 存储c
1984人阅读 评论(0) 收藏 举报
分类:

最近看了下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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:325299次
    • 积分:5314
    • 等级:
    • 排名:第5112名
    • 原创:196篇
    • 转载:73篇
    • 译文:0篇
    • 评论:58条
    最新评论