值 (電腦科學)

维基百科,自由的百科全书
跳转至: 导航搜索

计算机科学中是一无法进一步求值的表达式[1]例如,表达式“1 + 2”不是一个值,因为它可以被化简为表达式“3”。表达式“3”不能够继续化简,因此它是一个值。

大多数编程语言支持几种常见的值。

左值和右值[编辑]

一些语言使用左值l-value)和右值r-value)的概念。左值具有确定的、可以被获得的内存地址。这意味着左值可以是变量,也可以是对指向特定内存地址的指针解引用的结果。例如C语言的表达式(4 + 9),在执行时,计算机生成一个整数值13,但因为程序没有明确指定这个13如何在计算机中存储,所以这个表达式产生一个右值。另一方面,如果一个C程序声明了一个变量x并将x赋值为13,那么表达式(x)的值是13,并且是一个左值。

在C语言中,术语“左值”最初表示可以被赋值(即位于赋值运算符左侧)的对象,但由于“const”被加入到语言中,这类对象现在被称作“可更改的左值”。C++11定义了更复杂的值类型体系,包含左值(lvalue),纯右值(prvalue)和消亡值(xvalue)。

左值和右值的概念最早由CPL语言引入。

汇编语言[编辑]

值可以是一个给定的数据类型,例如一个字符串,一个数字,一个单一的字母等几乎任何类型的数据。

有些处理器支持多种尺寸的立即数,例如8位或16位,每一种指令形式采用独特的操作码和助记符。如果一个程序员提供的数据值不适合,汇编器将会出现“超出范围”的错误消息。大多数汇编器允许一个立即数被表示为ASCII十进制十六进制八进制二进制数据。因此,ASCII字符'A'和65、0x41是一样的。字符串的字节序在不同处理器之间可能不同,取决于汇编器和计算机体系结构。

参考资料[编辑]

  1. ^ Mitchell 1996, p. 92.