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

c++primer:變量和基本類型詳解

 更新時間:2021年08月31日 16:50:46   作者:nepu_G  
今天小編就為大家分享一篇關于C++Primer中變量和基本類型的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

前言

我只寫我覺得重要的,同時把一些我覺得比較重要的習題做一下

類型轉(zhuǎn)換

類型所能代表的范圍決定了轉(zhuǎn)換的過程

比如:當我們把一個非布爾類型的算數(shù)值賦給布爾類型時,初始值為0則代表結(jié)果為false,否則結(jié)果為true

當把浮點數(shù)賦給整數(shù)時,會舍去小數(shù)部分。

當賦給無符號整數(shù)的值大于它表示的范圍時,結(jié)果是這個值對(無符號整數(shù)最大值+1)取模。

變量聲明與定義的關系

變量聲明規(guī)定了變量的類型和名字,在這一點上定義與之相同,但是除此之外,定義還申請存儲空間,也可能為變量賦一個初始值。如果要聲明一個變量而非定義它,則使用extern關鍵詞,但是如果給extern修飾的變量初始化了,就抵消了extern的作用

變量命名規(guī)范

  • 標識符體現(xiàn)具體含義
  • 變量名一般用小寫字母
  • 用戶自定義的類名一般用大寫字母開頭,如Sales_item
  • 如果標識符由多個單詞組成,則單詞之間應該有明顯區(qū)別,如student_loan或者studentLoan

復合類型

符合類型是基于基于其他類型定義的類型。

引用

引用為對象起了另一個名字,引用類型引用另一種類型通過將聲明符寫成&d的形式來定義引用類型,其中d是聲明的變量名
引用不是對象,而是一個已經(jīng)存在的對象的另一個別名

由于引用不是對象,所以不存在引用的引用

指針

指針本身就是個對象,允許對指針賦值和拷貝,指針無需在定義時賦初值,和其他內(nèi)置類型一樣,在塊作用域內(nèi)定義的指針如果沒有被初始化,也將有一個不確定的值。

指針的值(即地址)應該屬于下列4種狀態(tài)之一

  • 指向一個對象
  • 指向緊鄰對象所占空間的下一個位置
  • 空指針
  • 無效指針(上述指針的其他情況)

*關于指向緊鄰對象所占空間所占對象的下一個位置,說實話沒太看懂,首先我在知乎查找了一下,然后又查看了一下英文版的c++ primer,發(fā)現(xiàn)其意思就是對象末尾的與其相鄰的下一個位置,比如:
int t=5;int p=&t,則p+1就代表這個緊鄰對象所占空間的下一個位置,但是這個對象沒有定義,所以原則上是不能解引用的 

const限定符

默認情況下,const 對象僅在文件內(nèi)有效

const的引用

可以把引用綁定到const對象上去,就像綁定到其他對象上去一樣,稱之為對常量的引用,對常量的引用不能用來用作修改其綁定的對象,比如:

有const int a=3,const int &b=a則&b=34,int &c=b這種行為是不允許的,因為&b=34會改變對象的值,而此時是常量,而int &c=b若可以的話則能通過&c=34來改變對象的值,這顯然是不能允許的。

引用所引用的類型與其所引用對象的類型一致

指針和const

由于指針本身就是個對象,因此指針本身是不是常量以及指針指向的對象是不是常量就是兩個獨立的問題。用頂層const(top-level const)代表指針本身是個常量,而用名詞底層const(low-level const)代表指針指向的對象是個常量

constexpr和常量表達式

常量表達式(const expression)代表值不會改變并且在編譯過程中就能得到計算結(jié)果的表達式。

例子:

const int max_files=20 //是常量表達式

const limit =max_files+1//limit是常量表達式

int ret=20//不是常量表達式,因為其值會改變

const int sa=get_size()//不是常量表達式,因為其值需要到運行期間得到

常量表達式是由它的數(shù)據(jù)類型和初始值來決定的

c++11新規(guī)定允許將變量聲明為constexpr類型以便由編譯器來驗證變量是否為常量表達式,聲明為constexpr的變量一定是一個常量,而且必須由常量表達式初始化 例:constexpr int sa=20

在constexpr限定符種如果定義了一個指針,限定符constexpr僅對指針有效,對指針指向的對象無關

auto類型說明符

其作用是讓編譯器去分析表達式的類型,例:auto a=a1+a2,編譯器會自動將a的類型轉(zhuǎn)換成a1+a2結(jié)果的類型。

decltype

其作用是得出表達式的類型 例:decltype(f()) sum=y,sum的類型就是f()返回值的類型

如果表達式的類型是解引用操作,則decltype將得到引用類型,因為解引用操作能給得到指針所指向的對象,并且能改變對象的值,所以是引用

如果decltype使用一個不加括號的變量則得到的結(jié)果是該變量的類型,如果使用一個加括號的變量,則得到的結(jié)果是引用類型,因為加了括號就代表這個變量是一個表達式,而變量是作為左值的特殊表達式,所以是引用

頭文件保護符

#ifdef 當且僅當變量已定義時為真,#ifndef當且僅當變量未定義時為真,一旦檢查得到為真則一直運行直到遇到#endif為止

習題

練習讀程序?qū)懡Y(jié)果

unsigned int u=10,u2=42;

std::cout<<u2-u<<std::endl;//32

std::cout<<u-u2<<std::endl;//4294967264,

其結(jié)果邏輯上是-32但是超出了其范圍0-4294967295需要對4294967296取模得到4294967264

練習

下列那些初始化是正確的

  • int i=-1,&r=0;//錯誤,0為字面值常量,需要常量引用
  • int *const p2=&i2;//正確
  • const int i=-1,&r=0;//正確
  • const int *const p3=&i2;//正確
  • const int *p1=&i2;//正確
  • const int &const r2;//錯誤,因為引用不是對象,不能用const修飾
  • const int i2=i,&r=i;//正確

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • 利用C++和QT實現(xiàn)Log自定義日志系統(tǒng)

    利用C++和QT實現(xiàn)Log自定義日志系統(tǒng)

    這篇文章主要為大家詳細介紹了如何利用C++和QT實現(xiàn)Log自定義日志系統(tǒng),文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2023-12-12
  • VC編程控件類HTControl之CHTGDIManager GDI資源管理類用法解析

    VC編程控件類HTControl之CHTGDIManager GDI資源管理類用法解析

    這篇文章主要介紹了VC編程控件類HTControl之CHTGDIManager GDI資源管理類用法解析,需要的朋友可以參考下
    2014-08-08
  • VS2019簡單快速的打包可安裝項目(圖文教程)

    VS2019簡單快速的打包可安裝項目(圖文教程)

    這篇文章主要介紹了VS2019簡單快速的打包可安裝項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • C語言實現(xiàn)支持動態(tài)拓展和銷毀的線程池

    C語言實現(xiàn)支持動態(tài)拓展和銷毀的線程池

    這篇文章主要為大家介紹了C語言實現(xiàn)支持動態(tài)拓展和銷毀的線程池,感興趣的小伙伴們可以參考一下
    2016-01-01
  • C++超詳細探究new/delete的使用

    C++超詳細探究new/delete的使用

    這篇文章主要介紹了C++中new與deleted關鍵字的使用,new在動態(tài)內(nèi)存中為對象分配空間并返回一個指向該對象的指針;delete接受一個動態(tài)對象的指針, 銷毀該對象, 并釋放與之關聯(lián)的內(nèi)存
    2022-07-07
  • C/C++ Qt QThread線程組件的具體使用

    C/C++ Qt QThread線程組件的具體使用

    QThread庫是QT中提供的跨平臺多線程實現(xiàn)方案,本文詳細的介紹了Qt QThread線程組件的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解數(shù)據(jù)結(jié)構C語言實現(xiàn)之循環(huán)隊列

    詳解數(shù)據(jù)結(jié)構C語言實現(xiàn)之循環(huán)隊列

    在我們生活中有很多隊列的影子,可以說與時間相關的問題,一般都會涉及到隊列問題;本文詳細介紹了如何使用C語言實現(xiàn)循環(huán)隊列,下面一起來看看。
    2016-07-07
  • C++中rapidjson組裝繼續(xù)簡化的方法

    C++中rapidjson組裝繼續(xù)簡化的方法

    今天小編就為大家分享一篇關于C++中rapidjson組裝繼續(xù)簡化的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • C++ vector的用法小結(jié)

    C++ vector的用法小結(jié)

    這篇文章主要介紹了c++中,vector是一個十分有用的容器,下面對這個容器做一下總結(jié)
    2013-12-12
  • VS2022 Git提交代碼的實現(xiàn)

    VS2022 Git提交代碼的實現(xiàn)

    本文主要介紹了VS2022 Git提交代碼的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05

最新評論

安仁县| 文山县| 阿图什市| 漠河县| 依安县| 麻栗坡县| 岳阳县| 虹口区| 乌审旗| 屏东县| 阳朔县| 柘荣县| 许昌县| 苗栗县| 芦溪县| 盐池县| 宁乡县| 兴化市| 琼结县| 阳曲县| 南江县| 钟山县| 饶平县| 永昌县| 龙胜| 南宫市| 峨边| 兴安县| 嘉善县| 富蕴县| 克山县| 新泰市| 安福县| 泗水县| 九寨沟县| 修武县| 绍兴市| 乐陵市| 吉安市| 邳州市| 黔江区|