a+++++b中a++不能做左值
来源:互联网 发布:淘800淘宝网 编辑:程序博客网 时间:2024/05/21 19:36
变量和文字常量都有存储区,并且有相关的类型。区别在于变量是可寻址的(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并不是你程序中定义的可寻址变量的引用 ,也就是说你不能通
过地址对temp进行操作.(换句话说就是不能作为左值),因为temp是一个临时变量
++i=5;是正确的就是因为其返回值就是i;
根据编译器的贪婪法原则应该解释为:
- a+++++b中a++不能做左值
- {a:A;b:B}---放入ArrayList中------------
- jQuery $("a.b")的a.b中有特殊字符“.” ,则不能如此使用,应用转义字符\\
- a>b?a:b
- a++为什么不能做左值
- class A 和 class B: public A中A a; B b; A *p = &a; p->foo();相关题目
- Java中 extends A, B
- A表中的数据根据条件,不能再B表中存在,显示A表符合条件的数据
- CSS中空格和>区别,A B, A>B
- AngularJS中(function(a,b){})(a,b)立即函数理解
- 请问编译原理中a(a|b)*a和aa*b*a有什么区别,谢谢。
- a+b
- a+++b
- A + B
- A+B
- A+B
- {A} + {B}
- a+++b
- Linux shell的标准输入、输出和错误
- ASCII码对照表
- 英语语音语调练习-American Accent Training(PDF+CD1-5下载)
- Filter及FilterChain的使用详解
- Android-如何查看设备的dpi
- a+++++b中a++不能做左值
- android跨进程通信(IPC):使用AIDL
- 关于异常: org.hibernate.HibernateException: No Session found for current thread
- iOS UITextField 只能输入数字和小数点,只能有两位小数
- Java内部类的使用小结
- 【Eclipse】使搜索、替换、重命名等操作排除.svn目录
- struts2和servlet区别
- c语言关机重启
- 【云简评】之十八《HP否认退出公有云背后到底真相如何?》