最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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++左值引用和右值引用

    淺談C++左值引用和右值引用

    這篇文章主要介紹了C++左值引用和右值引用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C++設(shè)計模式中的工廠模式詳細介紹

    C++設(shè)計模式中的工廠模式詳細介紹

    工廠模式,是一種實例化對象的方式,只要輸入需要實例化對象的名字,就可以通過工廠對象的相應(yīng)工廠函數(shù)來制造你需要的對象
    2022-09-09
  • QT已有項目導(dǎo)入工程時注意事項圖文詳解

    QT已有項目導(dǎo)入工程時注意事項圖文詳解

    QT開發(fā)這幾年大大小小項目做了不少,花了點時間對知識點總結(jié)整合了一部分,下面這篇文章主要給大家介紹了關(guān)于QT已有項目導(dǎo)入工程時注意事項的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • C/C++實現(xiàn)數(shù)字與字符串互相轉(zhuǎn)換的多種方法

    C/C++實現(xiàn)數(shù)字與字符串互相轉(zhuǎn)換的多種方法

    在C/C++程序中,會需要把數(shù)字與字符串做出互相轉(zhuǎn)換的操作,用于實現(xiàn)程序想要的效果,下面將介紹多種方法實現(xiàn)數(shù)字與字符串互相轉(zhuǎn)換,文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2024-08-08
  • C++中std::transform的使用小結(jié)

    C++中std::transform的使用小結(jié)

    std::transform?是 C++ 標(biāo)準庫中的一個算法,本文主要介紹了C++中std::transform的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • linux下使用g++編譯cpp工程的方法

    linux下使用g++編譯cpp工程的方法

    這篇文章主要介紹了linux下使用g++編譯cpp工程的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 用C語言實現(xiàn)猜數(shù)字游戲

    用C語言實現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細介紹了用C語言實現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 在編程語言中怎樣定義隊列及其使用(C++)

    在編程語言中怎樣定義隊列及其使用(C++)

    這篇文章主要介紹了在編程語言中怎樣定義隊列,本文主要根據(jù)c++來介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • C語言 冒泡排序算法詳解及實例

    C語言 冒泡排序算法詳解及實例

    這篇文章主要介紹了C語言 冒泡排序算法詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 利用OpenCV實現(xiàn)局部動態(tài)閾值分割

    利用OpenCV實現(xiàn)局部動態(tài)閾值分割

    這篇文章主要為大家詳細介紹了利用OpenCV實現(xiàn)局部動態(tài)閾值分割,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論

乐平市| 五大连池市| 百色市| 高台县| 星子县| 象州县| 汝城县| 孟津县| 龙川县| 师宗县| 新乡县| 甘南县| 海晏县| 长寿区| 库尔勒市| 枣强县| 湘西| 潞西市| 普陀区| 清镇市| 伽师县| 当阳市| 专栏| 晋城| 渝中区| 九龙县| 盘山县| 石渠县| 兴义市| 杂多县| 志丹县| 陵水| 肇东市| 于都县| 东台市| 钟祥市| 新巴尔虎左旗| 西乌| 大姚县| 东乡县| 宝山区|