zoukankan      html  css  js  c++  java
  • 左值与右值

    前言

            首先注意的是"地址y"和"地址y的内容"之间的区别,这是一个相当微妙之处,因为值大多数的编程语言中我们用同一个符号来表示这两样东西,由编译器根据上下文环境判断它们的具体含义。以赋值为例子说明。

    分析

                                                                     x = y;

    在这个上下文环境里,符号x的含义是"x所代表的地址",这被称为左值。左值在编译时就可知,左值表示存储结果的地方

    在这个上下文环境里,符号y的含义是"y所代表的地址的内容",这被称为右值。右值直到运行时才知,一般的,右值表示内容

    即,将y的内容赋值给x所在的地址空间。

           C语言中引入了"可修改的左值"这个术语,它表示左值可以出现在赋值语句的左边,这个是区分为与数组名的区分。数组名也用于确定对象在内存中的位置,是左值,但它不能作为赋值的对象。

    	int Arr[5]={1,2,3,4,5};
    	int *p = Arr;
    	for (;Arr<(p+5);Arr++)//**error**,Arr是不可修改的左值
    	{
    		printf("%d
    ",*Arr);
            }

          因此数组名是个左值但是个不可修改的左值,Arr是个指针常量,它的值在运行期间是固定不变的,Arr++也就无法实现。

    总结

           出现在赋值符号左边有时被称为左值(它位于“左手边”,或“表示地址”),出现在赋值符号右边有时则被称为右值(它位于“右手边”)。编译器为每个变量分配一个地址(左值),这个地址在编译的时候就可知,而且该变量在运行时一直保存在这个地址。相反,存储于变量中的值(右值)只有在运行时可知,在需要用到变量中存储的值,编译器才发出指令从指定的地址读入变量值并将它存于寄存器。

    ******************************************************************

    *          转载注明出处,如有歧义,欢迎指正                      *

    ******************************************************************

     

  • 相关阅读:
    easyui datagrid 显示 footer
    ie浏览器 vuejs axios Promise 未定义
    react引入富文本编辑器TinyMCE
    react中ant-design组件实现textarea获取光标位置并插入表情图片
    前端日志埋点优化
    iframe父子页面通讯
    HTML5中的audio在react中的使用----语音播放进度条、倍速播放、下载等
    echarts简单入门
    在textarea里实现获取光标位置和选中内容
    lodash数组发现之旅--------The second day
  • 原文地址:https://www.cnblogs.com/jinxiang1224/p/8468457.html
Copyright © 2011-2022 走看看