#include
using namespace std;
int main()
/*i++ 不可以作為左值;
++i 可以作為左值。
c++primer 中關於左值右值的說法:
變數和文字常量都有儲存區,並且有相關的型別。區別在於變數是可定址的(addressable)對於每乙個變數都有兩個值與其相聯:
1).它的資料值,儲存在某個記憶體位址中。有時這個值也被稱為物件的右值(rvalue,讀做are-value).我們也可認為右值的意思是被讀取的值(read value)。 文字常量和變數都可 被用作右值。
2).它的位址值——即儲存資料值的那塊記憶體的位址。它有時被稱為變數的左值(lvalue,讀作ell-value)。我們也可認為左值的意思是位置值location value文字常量不能被用作左值
i++的實現**:
int temp;
temp = i;
i = i+1;
return temp
++i的實現**:
i = i+1;
return i;
i++ = 10;錯誤是因為i++返回的是編譯器自動分配的臨時變數,而這個臨時變數temp並不是你程式中定義的可定址變數的引用,也就是不能作為左值。
++i = 10;因為其返回值就是i;
上面也可以看出 ++i 的效率比 i++高
*/
i 為什麼不能作為左值,而 i可以作為左值
今天看書見到如下 int a 2 a 根據操作符的優先順序和結合性知,操作符 的優先順序為3,結合性為右結合,即 a 可以理解為 a 但我把 放在vs2015上,結果報錯,如圖 意思就是所a 不能作為左值,那a 為什麼不能作為左值呢?我們先來看左值的定義 左值 lvalue 是b語言 c語言 c 語...
i 為什麼不能作為左值?
1 首先說左值和右值的定義 變數和文字常量都有儲存區,並且有相關的型別。區別在於變數是可定址的 addressable 對於每乙個變數都有兩個值與其相聯 1 它的資料值,儲存在某個記憶體位址中。有時這個值也被稱為物件的右值 rvalue,讀做are value 我們也可認為右值的意思是被讀取的值 r...
關於i 和 i以及左值,右值
今天無意之間看到了帖子上有人說 i 5 不合法 i 5 合法首先對於i 的實現是 int temp temp i i i 1 return temp 而 i的實現是 i i 1 return i 所以對於我們提出來的問題已經能得到解決了 再囉嗦幾句關於i 和 i的效率問題 按上面分析來說,i的效率是...