左值與右值

2021-04-13 11:52:43 字數 655 閱讀 6296

本文摘自:http://jiang5005.spaces.live.com/blog/cns!619f3de8ab99988e!111.entry?action=post&wa=wsignin1.0

8月20日 c++中的左值和右值

1.  概念

變數和文字常量都有儲存區,並且有相關的型別,區別在於變數是可定址的;

1>資料值,儲存在某個記憶體位址中,也稱右值(rvalue),右值是被讀取的值(read value),文字常量和變數都可被用於右值。

2>位址值,即儲存資料值的那塊記憶體位址,也稱左值(lvalue),文字常量不能被用作左值。

2 . 問題

給表示式加上括號: ++a--

結果 ++(a--)

這個表示式是非法的,因為前增量操作要求乙個可修改的左值,而 "a--" 不是左值(即右值)

3 . 前增量和後增量的區別

早期的c語言教材,for迴圈語句通常寫成:

for(int i=0;i<10;i++)

而現在多為:

for(int i=0;i<10;++i)

兩者有區別嗎?

a++ 即是返回 a的值,然後變數 a 加 1,返回需要產生乙個臨時變數類似於

++a 則為:

顯然,前增量不需要中間變數,效率更高。

左值與右值

左值就是那些能夠出現在賦值符號左邊的東西。右值就是那些可以出現賦值符號右邊的東西。例如 a b 25 a就是乙個左值,因為它標識了乙個可以儲存結果值的地點,b 25是個右值,因為它指定了乙個值。但是它們可以互換嗎?b 25 a 原先用作左值的a此時也可以當作右值,因為每個位置都 包含乙個值。然而,b...

左值與右值

對左值和右值的乙個最常見的誤解是 等號左邊的就是左值,等號右邊的就是右值。左值和右值都是針對表示式而言的,左值是指表示式結束後依然存在的持久物件,右值是指表示式結束時就不再存在的臨時物件。乙個區分左值與右值的便捷方法是 看能不能對表示式取位址,如果能,則為左值,否則為右值。下面給出一些例子來進行說明...

左值與右值

int a int b 1 a 5 2 b a 1 這句話是對的 而3 a 1 10 這句話就是錯的呢?關於左值右值的要點 1 變數可以作為左值也可以作為右值 有人會說,3 中的變數a不是可以作為左值嗎?為什麼是錯的。看看第二點。2 在進行表示式求值時,請注意每個操作符需要的運算元是左值還是右值,且...