溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-08-31 15:24:38 來源:億速云 閱讀:130 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“c++變量和基本類型詳解”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

目錄
  • 前言

  • 類型轉(zhuǎn)換

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

  • 變量命名規(guī)范

  • 復(fù)合類型

    • 引用

    • 指針

  • const限定符

    • const的引用

    • 指針和const

    • constexpr和常量表達(dá)式

    • auto類型說明符

    • decltype

    • 頭文件保護(hù)符


前言

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

類型轉(zhuǎn)換

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

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

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

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

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

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

變量命名規(guī)范

  • 標(biāo)識符體現(xiàn)具體含義

  • 變量名一般用小寫字母

  • 用戶自定義的類名一般用大寫字母開頭,如Sales_item

  • 如果標(biāo)識符由多個(gè)單詞組成,則單詞之間應(yīng)該有明顯區(qū)別,如student_loan或者studentLoan

復(fù)合類型

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

引用

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

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

指針

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

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

  • 指向一個(gè)對象

  • 指向緊鄰對象所占空間的下一個(gè)位置

  • 空指針

  • 無效指針(上述指針的其他情況)

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

const限定符

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

const的引用

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

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

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

指針和const

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

constexpr和常量表達(dá)式

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

例子:

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

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

int ret=20//不是常量表達(dá)式,因?yàn)槠渲禃淖?br/>

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

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

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

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

auto類型說明符

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

decltype

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

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

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

頭文件保護(hù)符

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

“c++變量和基本類型詳解”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI