左值(lvalue):應該被解釋被location-value,即可被定址的值
右值(rvalue):應該被解釋為read-value,即唯讀的值,而不能被定址
這樣理解應該更為準確一點
通俗的講,左值就是能夠出現在賦值符號左面的東西,而右值就是那些可以出現在賦值符號右面的東西了。
舉個很簡單的例子:
a=b+100;
那麼這裡a就是左值,b+25就是乙個右值。左值和右值之間是不一定都能互換的,上面的這個例子就是不能互換的,如果寫成
b+100=a;
大家都能看出來這樣寫會不編譯通過的,因為編譯器無法判斷b+100的記憶體位址,所以不能操作。
看了這個例子,可以做乙個總結,左值必須應該是乙個變數或者是表示式等,但是它的物理位置是可以確定的,而右值不一定,這也是它們兩者之間的區別。
關於左值是表示式的例子有陣列,還有指標這些都可以。
int array[10];
int a=5;
array[a+3]=10; //這裡左值就是乙個陣列表示式了
C 中的左值和右值
1.概念變數和文字常量都有儲存區,並且有相關的型別,區別在於變數是可定址的 對於每個變數,都有2個值與其相關聯 1 資料值,儲存在某個記憶體位址中,也稱右值 rvalue 右值是被讀取的值 read value 文字常量和變數都可被用於右值。2 位址值,即儲存資料值的那塊記憶體位址,也稱左值 lva...
c 中的左值和右值
左值 lvalue 右值 rvalue 是 c c 中乙個比較晦澀的概念,有的人可能甚至沒有聽過,但這個概念到了 c 11 後卻變得十分重要,它們是理解move forward 等新語義的基礎。左值與右值這兩概念是從c中傳承而來的,在c中,左值指的是能夠出現在等號左邊及右邊的變數 表示式 右值則指的...
C 中的左值和右值
在c 中,可以放到賦值操作符 左邊的是左值,可以放到賦值操作符右邊的是右值。有些變數既可以當左值又可以當右值。進一步來講,左值為lvalue,其實l代表location,表示在記憶體中可以定址,可以給它賦值 常量const型別也可以定址,但是不能賦值 rvalue中的r代表read,就是可以知道它的...