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

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

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

前言

我只寫(xiě)我覺(jué)得重要的,同時(shí)把一些我覺(jué)得比較重要的習(xí)題做一下

類型轉(zhuǎn)換

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

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

當(dāng)把浮點(diǎn)數(shù)賦給整數(shù)時(shí),會(huì)舍去小數(shù)部分。

當(dāng)賦給無(wú)符號(hào)整數(shù)的值大于它表示的范圍時(shí),結(jié)果是這個(gè)值對(duì)(無(wú)符號(hào)整數(shù)最大值+1)取模。

變量聲明與定義的關(guān)系

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

變量命名規(guī)范

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

復(fù)合類型

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

引用

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

由于引用不是對(duì)象,所以不存在引用的引用

指針

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

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

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

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

const限定符

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

const的引用

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

有const int a=3,const int &b=a則&b=34,int &c=b這種行為是不允許的,因?yàn)?amp;b=34會(huì)改變對(duì)象的值,而此時(shí)是常量,而int &c=b若可以的話則能通過(guò)&c=34來(lái)改變對(duì)象的值,這顯然是不能允許的。

引用所引用的類型與其所引用對(duì)象的類型一致

指針和const

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

constexpr和常量表達(dá)式

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

例子:

const int max_files=20 //是常量表達(dá)式

const limit =max_files+1//limit是常量表達(dá)式

int ret=20//不是常量表達(dá)式,因?yàn)槠渲禃?huì)改變

const int sa=get_size()//不是常量表達(dá)式,因?yàn)槠渲敌枰竭\(yùn)行期間得到

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

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

在constexpr限定符種如果定義了一個(gè)指針,限定符constexpr僅對(duì)指針有效,對(duì)指針指向的對(duì)象無(wú)關(guān)

auto類型說(shuō)明符

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

decltype

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

如果表達(dá)式的類型是解引用操作,則decltype將得到引用類型,因?yàn)榻庖貌僮髂芙o得到指針?biāo)赶虻膶?duì)象,并且能改變對(duì)象的值,所以是引用

如果decltype使用一個(gè)不加括號(hào)的變量則得到的結(jié)果是該變量的類型,如果使用一個(gè)加括號(hào)的變量,則得到的結(jié)果是引用類型,因?yàn)榧恿死ㄌ?hào)就代表這個(gè)變量是一個(gè)表達(dá)式,而變量是作為左值的特殊表達(dá)式,所以是引用

頭文件保護(hù)符

#ifdef 當(dāng)且僅當(dāng)變量已定義時(shí)為真,#ifndef當(dāng)且僅當(dāng)變量未定義時(shí)為真,一旦檢查得到為真則一直運(yùn)行直到遇到#endif為止

習(xí)題

練習(xí)讀程序?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需要對(duì)4294967296取模得到4294967264

練習(xí)

下列那些初始化是正確的

  • int i=-1,&r=0;//錯(cuò)誤,0為字面值常量,需要常量引用
  • int *const p2=&i2;//正確
  • const int i=-1,&r=0;//正確
  • const int *const p3=&i2;//正確
  • const int *p1=&i2;//正確
  • const int &const r2;//錯(cuò)誤,因?yàn)橐貌皇菍?duì)象,不能用const修飾
  • const int i2=i,&r=i;//正確

總結(jié)

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

相關(guān)文章

  • 用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析

    用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析

    本篇文章是對(duì)橋接模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • c語(yǔ)言循環(huán)加數(shù)組實(shí)現(xiàn)漢諾塔問(wèn)題

    c語(yǔ)言循環(huán)加數(shù)組實(shí)現(xiàn)漢諾塔問(wèn)題

    本文主要介紹了c語(yǔ)言循環(huán)加數(shù)組實(shí)現(xiàn)漢諾塔問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++實(shí)現(xiàn)LeetCode(140.拆分詞句之二)

    C++實(shí)現(xiàn)LeetCode(140.拆分詞句之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(140.拆分詞句之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言實(shí)現(xiàn)電腦關(guān)機(jī)程序

    C語(yǔ)言實(shí)現(xiàn)電腦關(guān)機(jī)程序

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電腦關(guān)機(jī)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++設(shè)計(jì)模式之職責(zé)鏈模式

    C++設(shè)計(jì)模式之職責(zé)鏈模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之職責(zé)鏈模式,本文講解了什么是職責(zé)鏈模式、什么場(chǎng)合下使用、代碼實(shí)例等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • C語(yǔ)言中system()函數(shù)的用法總結(jié)

    C語(yǔ)言中system()函數(shù)的用法總結(jié)

    system()函數(shù)功能強(qiáng)大。以下小編就為大家介紹一下在C語(yǔ)言中system()函數(shù)的用法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • C語(yǔ)言鍵盤(pán)控制走迷宮小游戲

    C語(yǔ)言鍵盤(pán)控制走迷宮小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鍵盤(pán)控制走迷宮小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++11中互斥鎖的使用

    C++11中互斥鎖的使用

    本文主要介紹了C++11中互斥鎖的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • c語(yǔ)言實(shí)現(xiàn)計(jì)算圓周率的近似值

    c語(yǔ)言實(shí)現(xiàn)計(jì)算圓周率的近似值

    這篇文章主要介紹了c語(yǔ)言實(shí)現(xiàn)計(jì)算圓周率的近似值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C++實(shí)現(xiàn)二叉樹(shù)的堂兄弟節(jié)點(diǎn)查詢

    C++實(shí)現(xiàn)二叉樹(shù)的堂兄弟節(jié)點(diǎn)查詢

    C++實(shí)現(xiàn)二叉樹(shù)的堂兄弟節(jié)點(diǎn)查詢,是指在二叉樹(shù)中,找到兩個(gè)節(jié)點(diǎn)深度相同但父節(jié)點(diǎn)不同的節(jié)點(diǎn),即為堂兄弟節(jié)點(diǎn)。實(shí)現(xiàn)這一功能可以通過(guò)遍歷二叉樹(shù)并記錄節(jié)點(diǎn)深度和父節(jié)點(diǎn)來(lái)實(shí)現(xiàn)
    2023-04-04

最新評(píng)論