zoukankan      html  css  js  c++  java
  • a++为啥不能用作左值

    原地址:http://wy892648414.blog.163.com/blog/static/212212135201378496591/

    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并不是你程序中定义的可寻址变量的引用 ,也就是说你不能通
    过地址对temp进行操作.(换句话说就是不能作为左值),因为temp是一个临时变量


    ++i=5;是正确的就是因为其返回值就是i;

  • 相关阅读:
    HTML5游戏参考资料
    Xcode 4.2 编译 ios5.1
    Const,Const函数,Const变量,函数后面的Const (zz)
    AndroidJNI 通过C++调用JAVA
    android adb shell 命令大全
    《Programming WPF》翻译 目录
    《Programming WPF》翻译 第3章 1.什么是控件
    CLR笔记目录
    《Programming WPF》翻译 第3章 3.内嵌控件
    《Programming WPF》翻译 第3章 2.处理输入
  • 原文地址:https://www.cnblogs.com/lanye/p/3580801.html
Copyright © 2011-2022 走看看