帮老豆英语网

lvalue

英 /ˈelˌvæljuː/美 /ˈelˌvæljuː/

n. 名词

左值;可寻址值

词义说明

lvalue(左值)是计算机编程中的术语,最初源自C语言,指可以出现在赋值运算符左侧的表达式,即具有可寻址的内存位置、可以被赋值的对象。其核心含义包括:1)可寻址性:lvalue代表内存中的某个位置,因此可以取得其地址;2)可赋值性:对于非const的lvalue,可以对其赋值;3)持久性:lvalue通常对应变量或对象,而非临时值。从本义引申,lvalue也用于区分“右值”(rvalue),后者是临时值或不可寻址的表达式。在C++中,lvalue进一步细分为“纯左值”(glvalue)和“泛左值”等,但基本概念不变。

词源解析

lvalue由“l”和“value”组合而成,其中“l”代表“left”,源于赋值表达式中的位置。该术语最早出现在C语言规范中,用以区分赋值运算符左侧和右侧的表达式。构词逻辑简单:左值即“可以放在左边的值”。记忆时可联想“left value”,即能放在等号左边的值。类似地,“rvalue”指“right value”,即只能放在右边的值。

适用语境

lvalue主要用于编程领域,特别是C、C++等系统级语言中。在学术写作中,如计算机科学论文或教材,lvalue用于精确描述表达式的属性,语气正式且严谨。在编程技术文档、代码注释或技术论坛中,lvalue常与rvalue、引用、指针等概念结合讨论,语气专业。在日常口语或非技术交流中极少使用,除非是程序员之间的技术讨论。在新闻报道或文学作品中几乎不会出现。

语法说明

lvalue并非动词或名词的常规用法,而是编程术语,因此没有及物/不及物之分。常见句型包括:“x is an lvalue”(x是一个左值),“lvalue reference”(左值引用)等。易错点在于混淆左值和右值,例如将临时返回值当作左值使用(如对函数返回值取地址),或对const左值赋值。在C++中,左值可以绑定到非const引用,而右值不能绑定到非const左值引用,但可以绑定到const引用或右值引用。

相似词辨析

lvalue与“变量”(variable)相近,但变量是数据类型,而lvalue是表达式属性。变量通常是左值,但左值不一定是变量(如数组元素、解引用指针)。与“右值”(rvalue)相对,右值指临时值或不可寻址的表达式。与“可修改左值”(modifiable lvalue)相比,后者强调可赋值性,而lvalue可能包含不可修改的常量对象。在C++中,还有“xvalue”(过期值)等,但lvalue是最基本的分类。

易错提醒

lvalue是中性术语,无褒贬色彩,但属于技术性词汇,语域较高,仅适用于编程语境。常见误用包括:将任何变量都称为lvalue,忽略const对象也是lvalue;或将数组名当作可修改左值(实际上数组名是const左值);在C语言中,取地址运算符&只能作用于左值。使用时需注意区分lvalue和rvalue,尤其在C++11之后,右值引用和移动语义使两者区别更为重要。

高频搭配

  • lvalue reference
  • modifiable lvalue
  • lvalue conversion
  • lvalue expression
  • lvalue-to-rvalue conversion
  • non-lvalue
  • const lvalue

双语例句

  1. In the expression `a = b + 1`, `a` is an lvalue because it can be assigned a value.在表达式 `a = b + 1` 中,`a` 是左值,因为它可以被赋值。
  2. The address-of operator `&` can only be applied to lvalues.取地址运算符 `&` 只能应用于左值。
  3. In C++, a non-const lvalue reference cannot bind to an rvalue.在C++中,非const左值引用不能绑定到右值。
  4. The variable `x` is an lvalue, but the literal `5` is an rvalue.变量 `x` 是左值,但字面量 `5` 是右值。
  5. An array name is an lvalue, but it cannot be modified.数组名是左值,但不能被修改。