程式設計基礎/左值和右值
外觀
< 程式設計基礎
一些程式語言使用左值和右值的理念,源於賦值語句左側和右側典型的求值方式。左值是指在單個表示式之外持續存在的物件。右值是一個臨時值,它在使用它的表示式之外不會持續存在。[1]
左值和右值指的是賦值運算子的左側和右側。左值(發音:L 值)的概念指的是賦值運算子左側的運算元必須是可修改的,通常是一個變數。右值的概念指的是獲取或提取賦值運算子右側的表示式或運算元的值。一些例子
age = 39
值 39 被提取或獲取(右值)並存儲到名為 age 的變數中(左值);銷燬之前儲存在該變數中的值。
voting_age = 18 age = voting_age
如果表示式在賦值運算子的右側有一個變數或命名常量,它將提取或獲取儲存在該變數或常量中的值。值 18 從名為 voting_age 的變數中提取或獲取,並存儲到名為 age 的變數中。
age < 17
如果表示式是一個測試表達式或布林表示式,該概念仍然是一個右值。識別符號名為 age 的值被提取或獲取,並在小於的關係比較中使用。
JACK_BENNYS_AGE = 39 JACK_BENNYS_AGE = 65;
這是非法的,因為識別符號 JACK_BENNYS_AGE 沒有左值屬性。它不是一個可修改的資料物件,因為它是一個常量。
在支援自增和自減運算子的語言中,左值和右值的一些用法可能會令人困惑。考慮
oldest = 55 age = oldest++
字尾自增表示在完成其他運算子後,使用我的現有值並自增。因此,oldest 變數的第一次使用是右值上下文,其中現有的值 55 被提取或獲取,然後分配給變數 age;一個左值上下文。oldest 變數的第二次使用是左值上下文,其中 oldest 的值從 55 自增到 56。
- 左值
- 賦值運算子左側的運算元必須是可修改的,通常是一個變數。
- 右值
- 提取或獲取儲存在變數或常量中的值。