成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端
C++左值與右值都有哪些不同之處,又有哪些聯系呢?我們將會通過對這篇文章的介紹,為大家詳細講解有關內容,幫助大家理解。

C++編程語言與C語言相比有很多不同之處,而且這些不同的地方有都體現著非常重要的作用。現在我們將會為大家詳細介紹一下有關C++左值與右值之間的一些聯系,希望能幫助大家對這一語言有一個深刻的認識。#t#

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,返回需要產生一個臨時變量類似于

  1. {   
  2. int temp = a;   
  3. aa=a+1;   
  4. return temp; //返回右值   
  5. }  

 

++a 則為:

  1. {   
  2. aa=a+1;   
  3. return &a; //返回左值   
  4. }  

 

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

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++左值與右值的相關介紹。

責任編輯:曹凱 來源: 博客園
相關推薦

2022-02-16 12:52:22

C++項目編譯器

2009-08-12 14:59:09

C#和Java不同點

2009-09-22 13:14:29

Hibernate gHibernate l

2009-08-25 09:58:56

C#參數不同點

2025-06-06 07:35:06

C++表達式右值

2025-02-07 09:58:43

C++11Lvalue對象

2025-03-10 08:30:00

2012-02-13 10:18:42

C++ 11

2010-08-12 08:57:25

2024-03-05 09:55:00

C++右值引用開發

2022-07-26 00:36:06

C#C++函數

2025-06-03 10:10:00

C++左值右值

2010-08-24 09:29:37

內連接全連接

2010-02-03 09:52:52

C++指針與引用

2009-11-17 09:07:55

靜態構造函數

2010-01-25 15:55:50

托管C++

2024-10-12 14:18:21

C++OOP函數重載

2011-09-02 14:45:43

Oracle臨時表SQL Server臨

2010-01-11 11:09:10

C++語法

2010-06-13 09:18:28

UML依賴
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本精品久久久一区二区三区 | 日韩二三区 | 国产精品免费看 | 一区二区视频 | 中文字幕在线免费观看 | 国产精品爱久久久久久久 | 欧美精品久久久久久久久久 | 亚洲品质自拍视频 | 久久综合婷婷 | 免费黄色大片 | 91综合在线视频 | 亚洲性人人天天夜夜摸 | 亚洲精品一区二区在线 | 韩国av一区二区 | 亚洲精品在线免费观看视频 | 中文字幕精品一区久久久久 | 日韩图区 | 日韩精品一区二区三区 | 成人网在线 | 精品国产乱码久久久久久丨区2区 | 日本午夜在线视频 | 大香在线伊779 | 成人欧美一区二区三区黑人孕妇 | 成人天堂 | 久久毛片网站 | 免费视频一区二区 | 色婷婷国产精品综合在线观看 | 欧美成年人视频在线观看 | 日韩国产精品一区二区三区 | 久久一区二区精品 | 天堂一区在线观看 | 精品一区在线看 | 国产a区| 精品国产伦一区二区三区观看体验 | 国产高清视频一区 | 久久精品 | 免费成人高清在线视频 | www.久久久久久久久 | 国产日韩精品一区 | 一级片片 | 中文字幕精品视频在线观看 |