美文网首页
转载:等号 赋值 左值右值

转载:等号 赋值 左值右值

作者: b6aed1af4328 | 来源:发表于2016-11-19 22:04 被阅读64次

在做c语言联系的时候,总是会出现左操作数必须是左值,左值就是在赋值中可以放在赋值操作符两边的值,比如: int a = 1; double b = 2.0 a = b; b = a; 这里a和b都是左值,一切变量都是左值,但const量是例外。 p是一个左值,和变量一样,只要在p的右边加上赋值运算符,就可改变p的值。 如果p是一个指向常量的指针,p就是一个不能修改的左值,即它不能被放到赋值运算符的左边。 i和 -i 都是表达式 但一个是左值(i),一个是右值(-i)。 ++,--这两种操作符要求作用于左值,所以i++合法,(-i)++不合法。不严谨的讲,左值右值的区分在于位于等号的那一侧,左侧的是左值,通常是一个变量,右侧的是右值,可以是一个变量,或者是一个表达式。 先看什么是表达式: 表达式由一个或多个操作数通过操作符组合而成。最简单的表达式仅包含一个字面值常量或变量。较复杂的表达式则由操作符以及一个或多个操作数构成。 再看什么是左值: C++ 中存在两种表达式:左值可以出现在赋值语句的左边或右边。右值只能出现在赋值的右边,不能出现在赋值语句的左边。 另外说明一下,i不仅是一个表达式,它还是一个变量,但是-i却不是一个变量,这是他们一个可以自增一个不能自增的根本原因 对于i++来说,i是一个变量,所以是一个左值,执行i=i+1 但是对于(-i)++来说,-i是一个表达式,而不是一个变量,一个表达式是不可以作为左值的,因为没有办法执行这条语句:-i=-i+1(-i+1的值不能附给-i,因为没有-i这个变量存储空间) 一个赋值表达式: X = Y; 在这个表达式里,符号X的含义是X所代表的地址,这被称为左值,左值在编译时可知,左值表示存储结果的地方; 在这个表达式里,符号Y的含义是Y所代表的地址的内容,这被称为右值,右值在运行时才可知,如无特别说明,右值表示“Y的内容”。在《C专家编程(中文版)》中第4章,对左值和右值的基本描述。 而右值则是只可以放在赋值操作符右边的值,比如: int a = 0; char *b = "hello"; 3 = a; // ERROR "howdy" = b // ERROR 这里3和"howdy"都是右值,所以不能放在赋值操作符左边,一切常数、字符和字符串都是右值

相关文章

  • 转载:等号 赋值 左值右值

    在做c语言联系的时候,总是会出现左操作数必须是左值,左值就是在赋值中可以放在赋值操作符两边的值,比如: int a...

  • C++11之右值引用&移动语义

    什么是左值、什么是右值 简单来说左值可以取地址、位于等号左边;而右值没法取地址,位于等号右边。 左值引用、右值引用...

  • 左值引用和右值引用

    1.左值和右值概念 左值是可以放在赋值号左边可以被赋值;左值必须要在内存中有实体; 右值当在赋值号右边取出赋值给其...

  • C11新特性右值引用&&

    首先我们先明白一个概念:什么是左值?什么是右值? 左值:既能出现在等号左边也能出现在等号右边的变量或表达式 右值:...

  • C++之左值、右值、左值引用、右值引用

    From CSDN 絮语清风 / CSDN hyman_yx 左值和右值 左值是可以放在赋值号左边可以被赋值的值;...

  • 什么是左值和右值?

    什么是左值和右值? 故名思意,左值就是能出现在赋值符号左边的东西,右值就是能出现在赋值符号右边的东西。具体说来,左...

  • 重新理解C11的右值引用

    1. 右值 左值:既能出现在等号左边也能出现在等号右边的变量或表达式 右值:因为声明结束后会被销毁,所以不能放在等...

  • C++11 右值引用

    1 左值(lvalue)和右值(rvalue) 左右值的两个定义: 1:位于赋值运算符 = 右边的值为右值;左边的...

  • [C++11阅读]移动语义和完美转发(中)

    左值、右值 在上一篇中,我们提到了lvalue、xvalue和prvalue的概念。左和右是相对于等号来说的,在某...

  • JavaScript基础运算符

    等号'=',在JavaScript中一个等号意为赋值,就是将等号右侧的值赋值给等号左侧的值。** 若我们想判断a是...

网友评论

      本文标题:转载:等号 赋值 左值右值

      本文链接:https://www.haomeiwen.com/subject/bduepttx.html