i++为什么不能作为左值?
来源:互联网 发布:数码煲仔饭的知乎 编辑:程序博客网 时间:2024/05/02 13:38
文章出自:http://blog.csdn.net/llingy/article/details/5862128
1)首先说左值和右值的定义:
变量和文字常量都有存储区,并且有相关的类型。区别在于变量是可寻址的(addressable)对于每一个变量都有两个值与其相联:
1).它的数据值,存储在某个内存地址中。有时这个值也被称为对象的右值(rvalue,读做are-value).我们也可认为右值的意思是被读取的值
(read value)。文字常量和变量都可 被用作右值。
2).它的地址值——即存储数据值的那块内存的地址。它有时被称为变量的左值(lvalue,读作ell-value)。我们也可认为左值的意思是位置值
location value文字常量不能被用作左值.
(2)
首先对于i++的实现是:
int temp;
temp = i;
i = i+1;
return temp;
而++i的实现是:
i = i+1;
return i;
所以对于我们提出来的问题已经能得到解决了:
i++=5; 是错误的是因为i++返回的是编译器自动分配的临时变量temp,而这个temp并不是你程序中定义的可寻址变量的引用 ,也就是说你不能通
过地址对它进行操作.(换句话说就是不能作为左值)
++i=5;是正确的就是因为其返回值就是i;
- i++为什么不能作为左值?
- i++为什么不能作为左值?
- 为什么i++不能作为左值
- i++为什么不能作为左值?
- 为什么++i可以作为左值,i++不能作为左值,针对int
- a++为什么不能作为左值?
- C语言 a++为什么不能作为左值?
- i++与++i作为左值
- a++不能作为左值的原因
- i++不能为左值的原因
- 为什么I/O引脚不能作为ROM的芯片使能引脚????
- 返回值为什么不能作为重载的一个条件
- 为什么(i++)不能做左值,而(++i)可以
- 为什么(i++)不能做左值,而(++i)可以
- 为什么(i++)不能做左值,而(++i)可以
- 为什么(i++)不能做左值,而(++i)可以
- 为什么c语言中赋值表达式左值和右值不能调换位置
- 左值的定义和i++,++i
- syslogins sysusers
- 在UIWebView中设置cookie
- java加密与解密
- Java中的运算符
- 找工作
- i++为什么不能作为左值?
- IAR中配置头文件包含路径
- mybatis分页 sql 语句
- 蓝港在线CEO王峰:我在网络游戏行业十年从业记
- ArcGIS server9.3实现根据坐标定位
- 关于scoped_ptr智能指针
- Delphi Open Tools API概述
- tsung--开源多协议分布式压力测试工具
- 冒泡算法简单例子_Java