第二章 數據類型、運算符和表達式

0x 考試內容要求


  1. 掌握C++的數據類型
  2. 解常量定義
  3. 掌握常量的用法
  4. 掌握運算符種類以及其優先級和結合性
  5. 熟練掌握表達式

1x C++語言的數據類型


C++中每一個變量或者常量都須要擁有本身的一種數據類型css

C++將數據類型分爲三種:html

  • 基本數據類型
  • 構造類型(導出數據類型)
  • 自定義類型

 

1x.1 基本類型

  • 邏輯型——bool
    • BOOL布爾型,用0,1來表示邏輯真假
    • 只擁有個值:truefalse分別用一、0表示

  • 字符型——char
    • 取值範圍:ASCII,擴充ASCII
    • 佔用一個字節,即8位
    • ASCII中的字符和整數具備對應關係
    • 取值範圍:0~255

  • 整型——int
    • 16位機,佔2個字節;32位機佔4個字節
    • 取值範圍爲:-32768~32767

  • 浮點型——floatdouble
    • 單精度浮點型(float)佔4個字節;
    • 雙精度浮點型(double)佔8個字節;

  • 空類型——void
    • 表示取值爲空
    • void *p表示指向類型不明確

1x.1.1 基本類型的派生類型

  • 基本類型的派生類型是指——基本類型的字長及其取值範圍能夠放大縮小,改變後的類型

  • 派生類生命符由基本類型關鍵字面前加上修飾符組成
    • short——縮短字長
    • long——加長字長
    • signed——有符號類型,取值類型包括正負值
    • unsigned——無符號類型,取值範圍只包括正值
      Tip:該規則並不能夠應用於所有基本類型具體請參照下表,圖片來源:見水印



1x.1.2 常量

常量是指在程序執行過程當中值不改變的量。
有兩種表示形式:字面常量和符號常量。

git

字面常量

  1. 邏輯常量
    • 有兩個值:TrueFalse
    • 分別用一、0表示
    • 能夠參與算數運算

  2. 字符常量
    • 簡稱字符:以單引號做爲起止符號
    • ASCII是字符範圍落在字符型類型的範圍內,因此也是字符常量(個別字符除外)
    • 轉義字符:用反斜槓「\」引導的下一個字符,失去了原來的含義,而轉義成了別的意義
    • 容許反斜槓一道一個具備1至3位的八進制數或以x開始標記的1至2位十六進制

  3. 整型常量
    • 十進制整數:整數和負數-231~231-1
    • 八進制整數:以數字0開頭,所有默認爲正數
    • 十六進制整數:以數字0和字母xX開頭
    • 整型數表示容許後面添加後綴uU來表示無符號和lL來表示長整型
  4. 實型常量
    • 定點表示:用小數形式表示實數,小數點能夠出在任何一個數字爲的前面或者後面
      甚至.01 -.012都是合法的
    • 浮點表示:以指數形式表示
      • 由一個十進制整數後接一個字母Ee和一個1~3位的十進制整數組成,E/e前面的稱爲尾數,E/e後面的稱爲指數。
      • 該浮點數的值等於尾數乘以是的指數冪
  5. 枚舉常量
    • 枚舉屬於用戶定義類型,用enum表示
    • 用來定義程序中的須要使用的一組相關符號常量
    • 聲明枚舉類型的語法格式
        enum <類型名>{<枚舉值1>,<枚舉值2>...}//這裏的枚舉具備順序性
    
    • 說明
      • 一個枚舉類型是int類型的一個子集,每個枚舉值表明着一個整數(默認從0開始,依次加一以表示枚舉值的順序性)
      • 若第i個枚舉值常量值爲m,則後續的枚舉值分別與m+1 m+2對應向前對應爲m-1

符號常量

  • 由用戶定義,定義方法有兩種,一種爲預編譯器的#defined或使用conts關鍵字。

1x.1.3 變量

  • 變量是程序中用於存儲信息的單元,它對應於內存中的某段存儲空間。
  • 定義變量須要說明變量的數據類型和名字
  • 數據類型說明爲變量分配多少的內存空間
  • 變量名能夠表明存儲空間,所以程序能在變量中存儲值和取出值
  1. 變量的定義
    1. 定義的格式:
      儲存類 變量類型 變量名=初始化值/初始表達式;
      • 默認儲存內類爲auto
      • 若未賦初值,則變量的值不肯定
      • 能夠定義多個變量,各個變量之間用逗號運算符,分開
    2. 變量名的命名規則:
      • 必須是一個合法的C++標識符
      • 不能使用C++關鍵字
  2. 變量的使用方法
    1. 全局變量和局部變量
      • 全局變量——在全部函數定義、類定義和程序塊以外聲明的變量
      • 若沒有初始化,系統會自動爲其賦值爲0
        (這裏就和局部變量的自動初始化區別開來)
      • 在程序的任何一個函數、類或者程序塊以外都能訪問全局變量
      • 局部變量——在某個函數定義、類定義和程序塊之類聲明的變量
      • 局部變量只能在聲明它的局部範圍內被訪問
    2. 生存期和做用域
      • 生存期——指從一個變量被聲明且分配內存開始,直到該變量聲明語句失效,它佔用的內存空間被釋放爲止
        • 全局變量——從聲明開始,知道程序結束爲止
        • 局部變量——從聲明開始,到包含它的最近的一個程序塊結束爲止
      • 做用域——指變量名能夠表明該變量儲存空間的範圍
      • 通常來講,變量的做用域與其聲明週期是一致的
        可使用動態分配空間的方法來控制變量的聲明週期
    3. 變量的存儲類屬性
      C++根據存儲方式的不一樣將存儲類別劃分爲4類:
      • auto變量——自動變量,爲變量聲明時的默認儲存類別
      • register變量——寄存器變量,建議編譯器以寄存器做爲存儲空間
      • static變量——靜態變量,聲明週期延續到程序的總之,默認賦初始值爲0
      • extern變量——外部變量,一般用於多個文件組成的程序中,多個文件同時被聲明指向同一個變量。
    4. typedef類型說明
      使用關鍵字typedef能夠爲已有類型名定義一個新類型名,爲了提升代碼的可讀性。
      其格式爲:
      typedef [已有類型名] [新類型名]
      
    5. 符號常量聲明語句
      • 聲明語句格式:
          const [類型名] [符號常量名] = 初值表達式
      
      • 必須在聲明符號常量的同事爲其賦初值
      • 符號常量的值爲常量,之後這個值始終保持不變。不能再次賦值
      • 若類型名爲int則能夠省略類型名
      • 適當使用能夠提升的程序的可讀性和可維護性

2x 運算符和表達式


  1. 運算符和表達式的概念
    • 運算符能夠分爲:運算符、操做數、表達式
    • 運算符能夠分爲:單目運算符,雙目運算符,三目運算符(只有一個? :
    • 運算符多是一個字符、兩個字符、三個字符或者是關鍵字
  2. 運算類型和運算符
    • 每一種運算符和其餘運算符之間的區別:
      • 參與運算的運算數的數量和類型
      • 運算結果的數據類型
      • 運算的具體操做:一個運算符有至少一種運算
    • 有些運算符不僅有一個含義:* &
  3. 賦值運算
    • 格式:[變量名] = [表達式],其中=爲賦值運算符
    • 具體操做:先計算右端表達式的值,該值賦值給左端變量
    • 賦值表達式
      • 若右兩端運算數類型不一樣,右邊類型轉換爲左邊類型
      • 使用=可使實現連續性賦值
      • 運算順序爲:從右到左
      • 複合賦值表達式
        += -=等等
  4. 算術運算符和算術表達式
    • 算術運算符的種類:
      • 單目運算符 - ++ --
      • 雙目運算符 + - * / %
      • 增量運算符
        空白| 自增 | 自減 |做用
        ------- | ----- | -------
        前置 | ++i | --i |變量i先加(減)1,而後再執行其餘操做
        後置 | i++ | i-- |變量i先執行其餘操做,再加(減)1
    • 算術表達式
      表達式中各類數值型數據間的混合運算
      在進行運算時,不一樣的數據類型要先轉換成爲同一種類型,而後進行運算,該轉換由系統自動執行,轉換規則以下圖:

      圖片來源於網絡

      例如double-(int/float/double)結果爲double型
相關文章
相關標籤/搜索