欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中的Lambda表達式及表達式語句

 更新時間:2022年01月24日 16:48:52   投稿:hqx  
這篇文章主要介紹了C++中的Lambda表達式及表達式語句,表達式這個概念在C++中屬于比較細節(jié)的知識了,很多時候我們只用知道怎么用,對于編譯器內(nèi)部怎么處理我們并不關(guān)心;并且關(guān)于左值和右值這個概念,也是C++比較深的一個小知識點,需要的朋友可以參考一下

一、概念

定義:表達式由一到多個操作數(shù)組成,可以求值并通常會返回求值結(jié)果;

最基本表達式:變量、字面值,通常包含操作符;

操作符特性:

  • 1、接收幾個操作數(shù):一元、二元、三元;
  • 2、對類型有要求(可能涉及類型轉(zhuǎn)換);
  • 3、操作數(shù)是左值還是右值;
  • 4、結(jié)果的類型;
  • 5、結(jié)果是左值還是右值;
  • 6、優(yōu)先級與結(jié)合性,可用小括號來改變運算順序;
  • 7、 操作符重載:不改變接收操作數(shù)的個數(shù)、優(yōu)先級與結(jié)合性;

注意:關(guān)于操作符優(yōu)先級問題可以參考文檔

二、左值與右值

參考網(wǎng)站

在C語言中:左值可能放在等號左邊,右值只能放在等號右邊;

在C++中,左值也不一定能放在等號左邊,右值也可能放在等號左邊;

值類型關(guān)系圖:

  • glvalue:泛左值,標(biāo)識一個對象、位或函數(shù);
  • pvalue:純右值,用于初始化對象或作為操作數(shù);
  • xvalue:亡值,表示其資源可以被重新使用;

C++是支持左值和右值的轉(zhuǎn)換的;

decltype可以接收表達式,并且根據(jù)類型不同產(chǎn)生不同的值:

參考文章:decltype 說明符

  • 表達式的值類別為純右值,則為type;
  • 表達式的值類別為純左值,則為type&
  • 表達式的值類別為亡值,則為type&& ;

三、類型轉(zhuǎn)換

定義:一些操作符要求其操作數(shù)具有特定的類型,或者具有相同的類型,此時可能產(chǎn)生類型轉(zhuǎn)換;

隱式類型轉(zhuǎn)換:編譯器自動發(fā)生的;

顯式類型轉(zhuǎn)換:

  • 1、static_cast<新類型> (表達式);
  • 2、const_cast<新類型> (表達式):去除常量性或增加常量性;
  • 3、顯示引入的轉(zhuǎn)換;

四、操作符

  • 算數(shù)運算符中,除邏輯非外,其它操作符都是左結(jié)合的;
  • 邏輯與、邏輯或具有短路特性;
  • 邏輯與&&優(yōu)先級高于邏輯或||;
  • 按位取反符:~ 按位與:& 按位或:| 按位異或:^ 移位操作符:<<、>>
  • 移位操作在一定程度上是乘以或除以2的冪,但速度更快;
  • 賦值操作符是右結(jié)合的;
  • 還有一些其他操作符,比如成員訪問操作符.和->,條件操作符?:等,在這就不做介紹了;

五、思考

1、思考下面x變量是左值還是右值,有什么特性?

const int x = 3;
? 

x是一個純左值,由于系統(tǒng)內(nèi)部為常量,所以不能放在等號左邊;

2、思考一下以下賦值操作符的原始代碼是怎樣的?

int x;
int y;
x = y = 5;

首先賦值操作符是右結(jié)合的,先計算y=3,并且不是把y的值賦予給x,而是這個表達式的返回值賦予x,原始代碼如下:

x = (y = 3);

可以通過https://cppinsights.io/這個網(wǎng)站,看出C++內(nèi)部對一些代碼的轉(zhuǎn)換處理;

3、思考以下代碼做了什么事情?

int x = 2;
int y = 3;
x^=y^=x^=y;

答案就是通過復(fù)合賦值操作,交換了x和y的值,詳細也和異或這個操作符有關(guān);

總結(jié):
? 表達式這個概念在C++中屬于比較細節(jié)的知識了,很多時候我們只用知道怎么用,對于編譯器內(nèi)部怎么處理我們并不關(guān)心;并且關(guān)于左值和右值這個概念,也是C++比較深的一個小知識點,了解后對于程序的優(yōu)化是有很大幫助的,本篇重點需要關(guān)注左值和右值,多參考官方cppreferenc的文檔,這是最權(quán)威的說明文檔;

到此這篇關(guān)于C++中的Lambda表達式及表達式語句的文章就介紹到這了,更多相關(guān)C++ Lambda表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解C++子類函數(shù)為什么不能重載父類函數(shù)

    一文詳解C++子類函數(shù)為什么不能重載父類函數(shù)

    這篇文章主要介紹了一文詳解C++子類函數(shù)為什么不能重載父類函數(shù),文章圍繞主題展開詳細的內(nèi)容戒殺,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • VisualStudio?禁用移動文件到文件夾自動修改命名空間功能

    VisualStudio?禁用移動文件到文件夾自動修改命名空間功能

    這篇文章主要介紹了VisualStudio?禁用移動文件到文件夾自動修改命名空間功能,文章底部給大家介紹了解決安裝VS2022時,出現(xiàn)未能安裝包“Microsoft.VisualCpp.Redist.14,version=14.32.31332,chip”=x86,的問題及解決方法,需要的朋友可以參考下
    2022-09-09
  • C語言實現(xiàn)俄羅斯方塊小游戲

    C語言實現(xiàn)俄羅斯方塊小游戲

    這篇文章主要為大家詳細介紹了Linux下C語言實現(xiàn)俄羅斯方塊小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • c++分離講解模板的概念與使用

    c++分離講解模板的概念與使用

    人們需要編寫多個形式和功能都相似的函數(shù),因此有了函數(shù)模板來減少重復(fù)勞動;人們也需要編寫多個形式和功能都相似的類,于是 C++ 引人了類模板的概念,編譯器從類模板可以自動生成多個類,避免了程序員的重復(fù)勞動
    2022-04-04
  • c語言中abs()和fabs()的區(qū)別點整理

    c語言中abs()和fabs()的區(qū)別點整理

    在本篇文章里小編給大家分享的是關(guān)于c語言abs()和fabs()的區(qū)別,有需要的朋友們可以參考學(xué)習(xí)下。
    2020-02-02
  • 深入解析C++的循環(huán)鏈表與雙向鏈表設(shè)計的API實現(xiàn)

    深入解析C++的循環(huán)鏈表與雙向鏈表設(shè)計的API實現(xiàn)

    這篇文章主要介紹了C++的循環(huán)鏈表與雙向鏈表設(shè)計的API實現(xiàn),文中的示例對于鏈表結(jié)點的操作起到了很好的說明作用,需要的朋友可以參考下
    2016-03-03
  • C語言數(shù)據(jù)結(jié)構(gòu)二叉樹先序、中序、后序及層次四種遍歷

    C語言數(shù)據(jù)結(jié)構(gòu)二叉樹先序、中序、后序及層次四種遍歷

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)二叉樹先序、中序、后序及層次四種遍歷方式,具有一定的知識性參考價值,需要的小伙伴可以先看一下
    2022-02-02
  • C++淺析數(shù)據(jù)在內(nèi)存中如何存儲

    C++淺析數(shù)據(jù)在內(nèi)存中如何存儲

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個變量時,就會在內(nèi)存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲什么
    2022-08-08
  • C語言?超詳細介紹與實現(xiàn)線性表中的無頭單向非循環(huán)鏈表

    C語言?超詳細介紹與實現(xiàn)線性表中的無頭單向非循環(huán)鏈表

    無頭單向非循環(huán)鏈表:結(jié)構(gòu)簡單,一般不會單獨用來存數(shù)據(jù)。實際中更多是作為其他數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),如哈希桶、圖的鄰接表等等。另外這種結(jié)構(gòu)在筆試面試中出現(xiàn)很多
    2022-03-03
  • C++中String的語法及常用接口的底層實現(xiàn)詳解

    C++中String的語法及常用接口的底層實現(xiàn)詳解

    在C語言中,string是一個標(biāo)準(zhǔn)庫類(class),用于處理字符串,它提供了一種更高級、更便捷的字符串操作方式,string 類提供了一系列成員函數(shù)和重載運算符,以便于對字符串進行操作和處理,本編文章會對C++中的 string 進行詳解,希望本篇文章會對你有所幫助
    2023-06-06

最新評論