第二章 數據類型、運算符和表達式
阿新 • • 發佈:2018-03-15
rule show 釋放 變量的存儲 button double pos z-index sans
0x 考試內容要求
- 掌握C++的數據類型
- 解常量定義
- 掌握常量的用法
- 掌握運算符種類以及其優先級和結合性
- 熟練掌握表達式
1x C++語言的數據類型
C++中每個變量或者常量都需要擁有自己的一種數據類型
C++將數據類型分為三種:
- 基本數據類型
- 構造類型(導出數據類型)
- 自定義類型
1x.1 基本類型
- 邏輯型——
bool
- BOOL布爾型,用0,1來表示邏輯真假
- 只擁有個值:
true
、false
分別用1、0表示
- 字符型——
char
- 取值範圍:ASCII,擴充ASCII
- 占用一個字節,即8位
- ASCII中的字符和整數具有對應關系
- 取值範圍:0~255
- 整型——
int
- 16位機,占2個字節;32位機占4個字節
- 取值範圍為:-32768~32767
- 浮點型——
float
、double
- 單精度浮點型(
float
)占4個字節; - 雙精度浮點型(
double
)占8個字節;
- 單精度浮點型(
- 空類型——
void
- 表示取值為空
void *p
表示指向類型不明確
1x.1.1 基本類型的派生類型
- 基本類型的派生類型是指——基本類型的字長及其取值範圍可以放大和縮小,改變後的類型
- 派生類生命符由基本類型關鍵字面前加上修飾符組成
short
——縮短字長long
——加長字長signed
——有符號類型,取值類型包括正負值unsigned
——無符號類型,取值範圍只包括正值
Tip:該規則並不可以應用於全部基本類型具體請參照下表,圖片來源:見水印
1x.1.2 常量
常量是指在程序執行過程中值不改變的量。
有兩種表示形式:字面常量和符號常量。
字面常量
- 邏輯常量
- 有兩個值:
True
、False
- 分別用1、0表示
- 可以參與算數運算
- 有兩個值:
- 字符常量
- 簡稱字符:以單引號作為起止符號
- ASCII是字符範圍落在字符型類型的範圍內,所以也是字符常量(個別字符除外)
- 轉義字符:用反斜杠“
\
”引導的下一個字符,失去了原來的含義,而轉義成了別的意義 - 允許反斜杠一道一個具有1至3位的八進制數或以x開始標記的1至2位十六進制
- 整型常量
- 十進制整數:整數和負數-231~231-1
- 八進制整數:以數字
0
開頭,全部默認為正數 - 十六進制整數:以數字0和字母
x
或X
開頭 - 整型數表示允許後面添加後綴
u
或U
來表示無符號和l
或L
來表示長整型
- 實型常量
- 定點表示:用小數形式表示實數,小數點可以出在任何一個數字為的前面或者後面
甚至.01
-.012
都是合法的 - 浮點表示:以指數形式表示
- 由一個十進制整數後接一個字母
E
或e
和一個1~3位的十進制整數組成,E
/e
前面的稱為尾數,E
/e
後面的稱為指數。 - 該浮點數的值等於尾數乘以是的指數冪
- 由一個十進制整數後接一個字母
- 定點表示:用小數形式表示實數,小數點可以出在任何一個數字為的前面或者後面
- 枚舉常量
- 枚舉屬於用戶定義類型,用
enum
表示 - 用來定義程序中的需要使用的一組相關符號常量
- 聲明枚舉類型的語法格式
enum <類型名>{<枚舉值1>,<枚舉值2>...}; //這裏的枚舉具有順序性
- 說明
- 一個枚舉類型是
int
類型的一個子集,每一個枚舉值代表著一個整數(默認從0開始,依次加一以表示枚舉值的順序性) - 若第i個枚舉值常量值為
m
,則後續的枚舉值分別與m+1
m+2
對應向前對應為m-1
- 一個枚舉類型是
- 枚舉屬於用戶定義類型,用
符號常量
- 由用戶定義,定義方法有兩種,一種為預編譯器的
#defined
或使用conts
關鍵字。
1x.1.3 變量
- 變量是程序中用於存儲信息的單元,它對應於內存中的某段存儲空間。
- 定義變量需要說明變量的數據類型和名字
- 數據類型說明為變量分配多少的內存空間
- 變量名可以代表存儲空間,因此程序能在變量中存儲值和取出值
- 變量的定義
- 定義的格式:
儲存類 變量類型 變量名=初始化值/初始表達式;- 默認儲存內類為
auto
- 若未賦初值,則變量的值不確定
- 可以定義多個變量,各個變量之間用逗號運算符
,
分開
- 默認儲存內類為
- 變量名的命名規則:
- 必須是一個合法的C++標識符
- 不能使用C++關鍵字
- 定義的格式:
- 變量的使用方法
- 全局變量和局部變量
- 全局變量——在所有函數定義、類定義和程序塊之外聲明的變量
- 若沒有初始化,系統會自動為其賦值為0
(這裏就和局部變量的自動初始化區別開來) - 在程序的任何一個函數、類或者程序塊之外都能訪問全局變量
- 局部變量——在某個函數定義、類定義和程序塊之類聲明的變量
- 局部變量只能在聲明它的局部範圍內被訪問
- 生存期和作用域
- 生存期——指從一個變量被聲明且分配內存開始,直到該變量聲明語句失效,它占用的內存空間被釋放為止
- 全局變量——從聲明開始,知道程序結束為止
- 局部變量——從聲明開始,到包含它的最近的一個程序塊結束為止
- 作用域——指變量名可以代表該變量儲存空間的範圍
- 一般來說,變量的作用域與其聲明周期是一致的
可以使用動態分配空間的方法來控制變量的聲明周期
- 生存期——指從一個變量被聲明且分配內存開始,直到該變量聲明語句失效,它占用的內存空間被釋放為止
- 變量的存儲類屬性
C++根據存儲方式的不同將存儲類別劃分為4類:auto
變量——自動變量,為變量聲明時的默認儲存類別register
變量——寄存器變量,建議編譯器以寄存器作為存儲空間static
變量——靜態變量,聲明周期延續到程序的總之,默認賦初始值為0;extern
變量——外部變量,通常用於多個文件組成的程序中,多個文件同時被聲明指向同一個變量。
typedef
類型說明
使用關鍵字typedef可以為已有類型名定義一個新類型名,為了提高代碼的可讀性。
其格式為:typedef [已有類型名] [新類型名]
- 符號常量聲明語句
- 聲明語句格式:
const [類型名] [符號常量名] = 初值表達式
- 必須在聲明符號常量的同事為其賦初值
- 符號常量的值為常量,以後這個值始終保持不變。不能再次賦值
- 若類型名為
int
則可以省略類型名 - 適當使用可以提高的程序的可讀性和可維護性
- 全局變量和局部變量
第二章 數據類型、運算符和表達式