C++ 快速導覽 - 基本內建資料型態

C++ 的基本內建資料型態 (primitive built-in data type) ,也稱為算術型態 (arithmetic type) ,可分為兩大類

  • 整數 (integer) 類
  • 浮點數 (floating-point number) 類


整數類



布林值、字元、整數都屬於整數類的算術型態。布林值型態的變數使用關鍵字 (keyword) bool 宣告 (declare) ,代表真假值,不是 true 就是 false 。以下程式計算出 bool 所佔的位元組數
#include <iostream>
 
int main()
{
    std::cout << "bool : " <<  sizeof(bool) << std::endl;
    return 0;
}
 
/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:sizeofbool.cpp
    功能:計算 bool 所佔的位元組數
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



字元型態有兩種,分別使用關鍵字 charwchar_t 宣告,前者為機器的基本字元集,可與 signedunsigned 兩個修飾詞 (modifier) 搭配,後者則是機器的擴充字元集。以下程式計算出 charwchar_t 所佔的位元組數 (byte)
#include <iostream>
 
int main()
{
    std::cout << "char : " << sizeof(char) << std::endl;
    std::cout << "signed char : " << sizeof(signed char) << std::endl;
    std::cout << "unsigned char : " << sizeof(unsigned char) << std::endl;
    std::cout << "wchar_t : " <<  sizeof(wchar_t) << std::endl;
    return 0;
}
 
/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:sizeofchar.cpp
    功能:計算 char 所佔的位元組數
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



整數利用三個關鍵字 shortintlong 進行宣告,另可與 signedunsigned 兩個修飾詞搭配,如下表
shortshort intsigned shortsigned short int
unsigned shortunsigned short int
intsignedsigned int
unsignedunsigned int
longlong intsigned longsigned long int
unsigned longunsigned long int


通常 short 會是半個機器字長 (machine word) , int 為一個機器字長, long 可能會是一個或兩個,視所用機器及編譯器而定。 signed 表示帶正負號, unsigned 表示不帶正負號,這是說unsigned 的值為 0 或正整數。以下程式計算出各種宣告組合所佔的位元組數
#include <iostream>

int main()
{
    std::cout << "short : " << sizeof(short) << std::endl;
    std::cout << "short int : " << sizeof(short int) << std::endl;
    std::cout << "signed short : " << sizeof(signed short) << std::endl;
    std::cout << "signed short int : " << sizeof(signed short int) << std::endl;
    std::cout << "unsigned short : " << sizeof(unsigned short) << std::endl;
    std::cout << "unsigned short int : " << sizeof(unsigned short int) << std::endl;
    std::cout << "int : " << sizeof(int) << std::endl;
    std::cout << "signed : " << sizeof(signed) << std::endl;
    std::cout << "signed int : " << sizeof(signed int) << std::endl;
    std::cout << "unsigned : " << sizeof(unsigned) << std::endl;
    std::cout << "unsigned int : " << sizeof(unsigned int) << std::endl;
    std::cout << "long : " << sizeof(long) << std::endl;
    std::cout << "long int : " << sizeof(long int) << std::endl;
    std::cout << "signed long : " << sizeof(signed long) << std::endl;
    std::cout << "signed long int : " << sizeof(signed long int) << std::endl;
    std::cout << "unsigned long : " << sizeof(unsigned long) << std::endl;
    std::cout << "unsigned long int : " << sizeof(unsigned long int) << std::endl;
    return 0;
}
 
/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:sizeofint.cpp
    功能:計算 int 所佔的位元組數
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



浮點數類



浮點數資料型態,也就是帶有小數點的數字,使用關鍵字 floatdouble 宣告,另可用 long 修飾 double ,所以浮點數型態共有三種,如下列表
float
double
long double


float 被稱為單精確度浮點數,有效數字到小數點後六位, double 稱為倍精確度浮點數,有效數字到小數點後十位,至於 long double 則稱為增廣精確度,有效數字視機器與編譯器的支援而定。以下程式計算出三者所佔的位元組數
#include <iostream>

int main()
{
    std::cout << "float : " << sizeof(float) << std::endl;
    std::cout << "double : " << sizeof(double) << std::endl;
    std::cout << "long double : " << sizeof(long double) << std::endl;
    return 0;
}
 
/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:sizeoffloat.cpp
    功能:計算 double 所佔的位元組數
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



中英文術語對照
基本內建資料型態primitive built-in data type
算術型態arithmetic type
整數integer
浮點數floating-point number
關鍵字keyword
宣告declare
修飾詞modifier
位元組數byte
機器字長machine word


您可以繼續參考
基本概念
標記
基本資料型態


相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁


參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial

C++ Primer, Fourth Edition, Stanley B. Lippman...


本文於 2013 年 1 月更新

沒有留言: