關於i 和 i以及左值,右值

2021-05-23 06:15:24 字數 409 閱讀 9490

今天無意之間看到了帖子上有人說  i++=5;      //不合法

++i=5;      //合法

首先對於i++的實現是:int   temp;temp   =   i; i   =   i+1;return   temp;   

而++i的實現是:i   =   i+1; return   i;

所以對於我們提出來的問題已經能得到解決了:

再囉嗦幾句關於i++和++i的效率問題:按上面分析來說,++i的效率是比i++效率高些的.(vc)對於內建(built-in)型別,寫++變數

和變數++編譯器都經過優化,採用++變數的方式.但是對於自定義類物件如果過載先++,和後++操作符那麼要使用先++,因為這時編譯器,不可能對你的

型別進行優化!

(C )關於i 和i 的左值 右值問題

1 什麼是左值和右值?左值就是出現在表示式左邊的值 等號左邊 可以被改變,他是儲存資料值的那塊記憶體的位址,也稱為變數的位址 右值是指儲存在某記憶體位址中的資料,也稱為變數的資料。左值可以作為右值,但右值不可以是左值。因此也只有左值才能被取位址。2 舉兩個問題 int i 0 i i 錯誤 i i ...

i 與 i作為左值

include using namespace std int main i 不可以作為左值 i 可以作為左值。c primer 中關於左值右值的說法 變數和文字常量都有儲存區,並且有相關的型別。區別在於變數是可定址的 addressable 對於每乙個變數都有兩個值與其相聯 1 它的資料值,儲存在...

左值和右值,左值引用和右值引用

左值 lvalue 這一術語 於c語言,用來指代那些可以用在賦值表示式左側的東西,具名物件 在棧和堆上分配的物件,或者其他物件的成員,總之就是又確定儲存空間的東西。而術語右值 rvalue 也是源自c語言,指的是只能在賦值表示式右側出現的東西,如字面值和臨時物件。只能繫結到左值,不能繫結到右值的引用...