1. 程式人生 > >第二章 數據類型、運算符和表達式

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

rule show 釋放 變量的存儲 button double pos z-index sans

0x 考試內容要求


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

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


C++中每個變量或者常量都需要擁有自己的一種數據類型

C++將數據類型分為三種:

  • 基本數據類型
  • 構造類型(導出數據類型)
  • 自定義類型
技術分享圖片

1x.1 基本類型

  • 邏輯型——bool
    • BOOL布爾型,用0,1來表示邏輯真假
    • 只擁有個值:truefalse分別用1、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 常量

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

字面常量

  1. 邏輯常量
    • 有兩個值:TrueFalse
    • 分別用1、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則可以省略類型名
      • 適當使用可以提高的程序的可讀性和可維護性

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