今天無意之間看到了帖子上有人說 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語言,指的是只能在賦值表示式右側出現的東西,如字面值和臨時物件。只能繫結到左值,不能繫結到右值的引用...