左值與右值

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

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

C++中的左值和右值

1.  概念
變量和文字常量都有存儲區,並且有相關的類型,區別在於變量是可尋址的;
 
對於每個變量,都有2個值與其相關聯:
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,返回需要產生一個臨時變量類似於
{
       int temp = a;
       a=a+1;
       return temp;  //返回右值
}
 
++a 則爲:
{
    a=a+1;
    return &a;    //返回左值
}
 
顯然,前增量不需要中間變量,效率更高。
發佈了18 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章