zoukankan      html  css  js  c++  java
  • C语言几个术语: 数据对象,左值,右值

      1. 数据对象

      赋值表达式语句的目的是把值存储到内存位置上. 用于存储值的数据存储区域统称为数据对象.

      2. 左值

      左值是C语言的术语, 用于标识特定数据对象的名称或表达式.

      对象指的是实际的数据存储, 而左值用于标识或定位存储位置的标签.

      对于早期的C语言, 提到左值意味这:

        a. 它指定一个对象, 所以引用内存中地址;

        b. 它可用在赋值运算符的左侧.

      后来, 标准中新增了const限定符, 用const创建的变量不可修改. 因此, const标识符满足a项, 但是不满足b项.  一方面C继续把标识对象的表达式定义为左值, 一方面某些左值却不能放在赋值运算符的左侧.

      对于此中矛盾, C标准新增了一个术语, 可修改的左值, 用于标识可修改的对象. 所以, 赋值运算符的左值应该是可修改的左值. 当前标准建议, 使用术语对象定位值.

      3 右值

      右值指的是能赋值给可修改的左值, 且本身不是左值. 例如:

    int bmw = 200;

      bmw是可修改的左值, 200 是右值. 右值源于right. 右值可以是常量,变量或其他可求值的表达式. 实际上, 当前标准在描述这一概念时使用的是表达式的值,而不是右值.

      举例说明:

    int ex;
    int why;
    int zee;
    const int TWO = 2;
    why = 42;
    zee = why;
    ex = TWO*(why+zee);

      ex, why, zee都是可修改的左值( 或对象定位值 ), 它们可用于赋值运算符的左侧和右侧. 

      TWO是不可改变的左值, 它只能用于赋值运算符的右侧 ( 在该例中, TWO被初始化为2,这里的=运算符表示初始化而不是赋值 ).

      42 是右值, 它不能引用指定内存位置

      (why+zee ) 是右值,该表达式不能不是特定内存位置, 而且也不能给它赋值. 它是程序计算的一个临时值,在计算完毕后便会被丢弃.

        

        

  • 相关阅读:
    理解 Go interface 的 5 个关键点
    volcano networkpolicy
    通过 iptables log 日志追踪 Kubernetes 网络
    Network Policy Enforcement
    calico 容器编排之Kubernetes多租户网络隔离
    Kubernetes的原生多租户解决方案
    第四章 计算机基础知识详解
    vue兄弟组件通信
    vue父子组件通信
    Safari浏览器css兼容
  • 原文地址:https://www.cnblogs.com/yyy6/p/9011169.html
Copyright © 2011-2022 走看看