C++ 入門指南

單元 3 - 基本內建型態與物件

本書已有新版,請參考 C++ 入門指南 4.01 - 單元 3 - 基本內建型態與物件

C++ 中的基本內建型態 (primitive built-in type) 屬於算術型態 (arithmetic type) ,分成四大類

布林 字元 整數 浮點數

基本資料型態共有九種,如下表

型態類型 關鍵字 範圍
布林 bool true, false
字元 char 1 位元組
寬字元 wchar_t 2 位元組
整數 short 2 位元組
整數 int 4 位元組
整數 long 4 位元組
浮點數 float 4 位元組
浮點數 double 8 位元組
浮點數 long double 12 or 16 位元組

1 個位元組 (byte) 有 8 位元 (bit) ,每一個位元表示 0 或 1 的二進位數字。

C++11 的新標準中增加了 char16_tchar32_t 表示 UTF-16 及 UTF-32 的字元,另外增加了 long long 的整數型態。

依資料所佔位元數的不同,整數浮點數各三種,另外布林有一種,字元有兩種。一般來說,資料型態所佔據的位元數越多,可表示的數字範圍也越大。字面常數 (literal) 也就是程式中直接寫出來的數值 (value) ,以下表示布林值 (Boolean value)字元 (character)整數 (integer)浮點數 (floating-point number)字面常數

bool a = true;
char b = '2';
int c = 2;
double d = 2.0;

宣告 (declare) 布林型態的變數 (variable) 使用關鍵字 (keyword) booltrue布林值的字面常數,表示邏輯上的真,布林型態的另一個字面常數為 false ,表示邏輯上的假。

字元型態則使用關鍵字 char字元型態的字面常數為單引號圍起來的單一字元,或是單引號圍起來,反斜線加上四位的十六位元數字,例如

char e = 'a'; // 小寫英文字母 a
char f = '2'; // 阿拉伯數字 2
char g = '.'; // 英文句點 .
char h = '%'; // 百分比符號 %

反斜線加上特定英文小寫字母表示跳脫字元,用來表示一些不可見字元,例如

char i = '\n'; // 新行符號
char j = '\t'; // tab 鍵
char k = '\a'; // 響鈴
char l = '\"'; // 雙引號

整數型態共有三種,一般來講,最常使用的是 int 型態,沒有特別指定的整數字面常數也會是 int 型態,而 long 型態又被稱為長整數,字面常數須加上英文字母 Ll 的字尾,如

long m = 220L; // 長整數 220
long n = 220l; // 長整數 220

浮點數型態有三種,最常使用的是 double 型態,沒有特別指定的浮點數字面常數也會是 double 型態,若是需要使用 float 型態的浮點數,需要在字面常數加上 Ff 的字尾,如

float o = 22.0F; // 浮點數 22.0
float p = 22.0f; // 浮點數 22.0

變數為具名的儲存空間,除了以上九種基本內建型態之外,變數多半表示物件 (object) 。這裡我們照習慣的講法,若變數不是表示基本內建型態就是表示物件,我們只需要知道宣告變數後,該變數就具有屬於宣告型態的記憶體空間就可以了。

例如 demo.cpp

// 引入標準程式庫中相關的輸入、輸出程式
#include <iostream>
// 引入標準程式庫中相關的字串程式
#include <string>

// std 為標準程式庫的命名空間
using namespace std;

int main(void) {
    // 下面建立名稱為 m , string 型態的物件
    // 小括弧為 string 的建構子,雙引號為字串字面常數
    string m("There is no spoon.");

    // cout 用來輸出的物件, endl 為新行符號 '\n'
    cout << endl << m << endl << endl << endl;

    // 最後回傳 0 給作業系統
    return 0;
}

/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:demo.cpp
   功能:示範簡單的 C++ 程式
   作者:張凱慶 */

第 12 行,變數 mstring 型態的物件

string m("There is no spoon.");

這裡我們用了最基本的方式建立物件,也就是在變數名稱後接小括弧用建構函數 (constructor) 初始化,另外幾種初始化的方式,其中之一為利用字串字面常數 (string literal)

string m = "There is no spoon.";

其他建立物件的方式還可以用指標 (pointer) 變數或 new 關鍵字,接下來我們來看看指標與參考 (reference) 吧!

相關教學影片

中英文術語對照
基本內建型態 primitive built-in type
算術型態 arithmetic type
位元組 byte
位元 bit
字面常數 literal
數值 value
布林值 Boolean value
字元 character
整數 integer
浮點數 floating-point number
宣告 declare
變數 variable
關鍵字 keyword
物件 object
建構函數 constructor
字串字面常數 string literal
指標 pointer
參考 reference
重點整理
1. C++ 的基本內建型態分成四大類,有布林、整數、字元、浮點數。
2. 布林型態使用關鍵字 bool 宣告,只有兩種值,一種是 true ,另一種則是 false
3. 整數型態有三種,關鍵字分別是 shortintlong
4. 字元型態有兩種,關鍵字分別是 charwchar_t , C++11 新增加了另外兩種。
5. 浮點數型態有三種,關鍵字分別是 floatdoublelong double
6. 除了基本內建型態外,變數多半表示物件。
問題與討論
1. 基本內建型態有哪四大類?每一類使用哪些關鍵字?
2. 為什麼整數型態有三種?浮點數型態有兩種?差別在哪裡呢?
3. 字元跟字串有什麼不同?
4. 基本內建型態跟物件有什麼不同?
練習
1. 仿照 demo.cpp ,寫一個程式 exercise0301.cpp 宣告 3 種整數型態的變數,並分別設定為 123 ,然後在命令列印出來。
2. 寫一個程式 exercise0302.cpp 宣告 2 種浮點數型態的變數,並分別設定為 0.10.2 ,然後在命令列印出來。
3. 寫一個程式 exercise0303.cpp 宣告字元型態的變數 a ,並將 a 設定為 'a' ,然後在命令列印出 a + 1a + 2
4. 寫一個程式 exercise0304.cpp 宣告布林型態的變數 a ,並將 a 設定為 true ,然後在命令列印出 a!a
5. 寫一個程式 exercise0305.cpp ,用 '*' 印出一個三角形。

上一頁 單元 2 - 如何編譯與執行
回 C++ 入門指南首頁
單元 4 - 指標與參考
回 C++ 教材
回程式語言教材首頁