91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析C++左值與右值之間共同與不同點

發布時間:2021-10-27 18:52:48 來源:億速云 閱讀:138 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關如何解析C++左值與右值之間共同與不同點,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

C++編程語言與C語言相比有很多不同之處,而且這些不同的地方有都體現著非常重要的作用。

1. C++左值與右值概念

變量和文字常量都有存儲區,并且有相關的類型,區別在于變量是可尋址的;

對于每個變量,都有2個值與其相關聯:

1>數據值,存儲在某個內存地址中,也稱右值(rvalue),右值是被讀取的值(read value),文字常量和變量都可被用于右值。

2>地址值,即存儲數據值的那塊內存地址,也稱左值(lvalue),文字常量不能被用作左值。

2 . C++左值與右值的相關問題

給表達式加上括號: ++a--

結果 ++(a--)

這個表達式是非法的,因為前增量操作要求一個可修改的左值,而 "a--" 不是左值(即右值)

3 . C++左值與右值中前增量和后增量的區別

早期的c語言教材,for循環語句通常寫成:

for(int i=0;i<10;i++)

而現在多為:

for(int i=0;i<10;++i)

兩者有區別嗎?

a++ 即是返回 a的值,然后變量 a 加 1,返回需要產生一個臨時變量類似于

{   int temp = a;   aa=a+1;   return temp; //返回右值   }

++a 則為:

{   aa=a+1;   return &a; //返回左值   }

顯然,前增量不需要中間變量,效率更高。

C++左值與右值的含義與誤區

術語 “L-Values” 和 “R-Values” 是很容易被搞混的,因為它們的歷史淵源也是混淆。他們最初起源是編譯器的設計者,從字面上來理解就是表達式左邊的值和表達式右邊的值。它們的含義一直在演化而名字卻沒變,現在已經“名”不副“實”了。雖然還是稱為left-value 和right-value,但是他們的含義已經大大不同了。

C++ 03 標準上是這樣寫的: “每一個表達式要么是一個 lvalue,要么就是一個 rvalue。”

記住,lvalue和rvalue是針對表達式而言的。

lvalue 是指那些單一表達式結束之后依然存在的持久對象。例如: obj,*ptr, prt[index], ++x 都是 lvalue。

rvalue 是指那些表達式結束時(在分號處)就不復存在了的臨時對象。例如:1729 , x + y , std::string("meow") , 和 x++ 都是 rvalue。

++x 和 x++ 的區別的語義上的區別: 當寫 int i = 10 ; 時, i 是一個 lvalue,它實際代表一個內存里的地址,是持久的。 表達式 ++x 也是一個 lvalue,它修改了 x 的值,但還是代表原來那個持久對象。但是,表達式 i++ 卻是一個 rvalue,它只是拷貝一份i的初值,再修改i的值,***返回那份臨時的拷貝,那份拷貝是臨時對象。 ++i 和 i++ 都遞增i,但 ++i 返回i本身,而 i++ 返回臨時拷貝。這就是為什么 ++i 之所以是一個 lvalue,而 i++ 是一個 rvalue。

lvalue 與 rvalue 之分不在于表達式做了什么,而在于表達式代表了什么(持久對象或臨時產物)。 判斷一個表達式是不是 lvalue 的直接方法就是“能不能對表達式取址?”,如果能夠,那就是一個 lvalue;如果不能,那就是一個 rvalue。

關于如何解析C++左值與右值之間共同與不同點就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

五寨县| 化德县| 鹤峰县| 金堂县| 三原县| 正阳县| 呼伦贝尔市| 馆陶县| 龙胜| 武汉市| 澜沧| 宜兴市| 唐山市| 天峨县| 桓仁| 防城港市| 保德县| 龙游县| 固始县| 延安市| 天水市| 鄱阳县| 霞浦县| 蛟河市| 永定县| 乐安县| 阜阳市| 安丘市| 玉环县| 桦川县| 基隆市| 中牟县| 高碑店市| 亚东县| 肇庆市| 金山区| 泰州市| 乌恰县| 颍上县| 山阳县| 都昌县|