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; //返回左值 }
显然,前增量不需要中间变量,效率更高。

posted on 2008-04-23 11:40 王光平 阅读(687) 评论(0)  编辑 收藏 引用 所属分类: 编程技术


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

留言簿(4)

随笔分类

随笔档案

搜索

最新评论