資料型態類型

宣告變數

變數的定義為在程式中可被初始化(initial)及指派(assign)的動態資料,執行時期可根據流程改變其內容。

在 C 語言中宣告變數的模式如下範例

{資料型態} {變數名稱} = {初始化的值}; // 宣告一個具有初始化值的資料,其初始化的值必須符合其資料型態
{資料型態} {變數名稱}; // 宣告一個未具有初始化值的資料

已被宣告的變數,則可以指派符合其資料型態的資料。

{資料型態} {變數名稱} // 宣告變數
{變數名稱} = {符合其資料型態的值}; // 指派資料

基本類型

char

char 為 character 的縮寫,代表用來儲存一個「字元」。

char 可以用在儲存下列舉出的可顯示字元

# 26 個大寫的拉丁英文字母
A B C D E F G H I J K L M 
N O P Q R S T U V W X Y Z

# 26 個小寫的拉丁英文字母
a b c d e f g h i j k l m
n o p q r s t u v w x y z

# 10 個十進位數字
0 1 2 3 4 5 6 7 8 9

# 29 個標點符號
! " # % & ' ( ) * + , - . / :
; < = > ? [ \ ] ^ _ { | } ~

在程式中使用 char 類型範例如下

int main()
{
    char alpha = 'A'; // 宣告一個資料型態為 char,變數名稱為 alpha,初始化資料為 'A' 的變數
    alpha = 'B'; // 指派資料 'B' 給變數 alpha
}

注意:在 C 語言中,char 並不支援中文字元或其它不存在於上述可顯示字元的其它語系字元,在程式中字元變數不應該使用中文內容的資料。

字元僅能支援「單一字元」,若資料內容為 'AB' 則標準無法保證在不同情境下都有相同行為。

此警告情況也會出現在資料內容為中文字元時。

// 錯誤示範
// warning: multi-character character constant
// warning: overflow in implicit constant conversion

int main()
{
    char multiChar = 'AB';
    char chineseChar = '安';
}
有號(signed)整數類型

所謂的「有號」指的是可表達負數的整數類型。

標準有號整數如下所示:signed charshortintlonglong long

在程式中使用 int 類型範例如下

int main()
{
    int number = 40; // 宣告一個資料型態為 int,變數名稱為 number,初始化資料為 40 的變數
}

所佔記憶體空間大小

類型 等價類型 所佔記憶體大小
short short int 至少 2 bytes,通常 2 bytes
short int short int 至少 2 bytes,通常 2 bytes
signed short short int 至少 2 bytes,通常 2 bytes
signed short int short int 至少 2 bytes,通常 2 bytes
int int 至少 2 bytes,通常 4 bytes
signed int 至少 2 bytes,通常 4 bytes
signed int int 至少 2 bytes,通常 4 bytes
long long int 至少 4 bytes,通常 4 bytes。在 64 位元的 Unix/Unix-Like 上為 8 bytes
long int long int 至少 4 bytes,通常 4 bytes。在 64 位元的 Unix/Unix-Like 上為 8 bytes
signed long long int 至少 4 bytes,通常 4 bytes。在 64 位元的 Unix/Unix-Like 上為 8 bytes
signed long int long int 至少 4 bytes,通常 4 bytes。在 64 位元的 Unix/Unix-Like 上為 8 bytes
long long long long int 至少 8 bytes,通常 8 bytes
long long int long long int 至少 8 bytes,通常 8 bytes
signed long long long long int 至少 8 bytes,通常 8 bytes
signed long long int long long int 至少 8 bytes,通常 8 bytes
無號(unsigned)整數類型

與有號整數相反,無號整數是指不帶負號的整數。

註:0 是無號整數。

標準的無號整數如下所示:_Boolunsigned charunsigned shortunsigned intunsigned longunsinged long long

在程式中使用 unsigned int 類型範例如下

int main()
{
    unsigned int value = 105; // 宣告一個資料型態為 unsigned int,變數名稱為 value,初始化值為 105 的變數
}

使用 _Bool 資料型態

int main()
{
    _Bool sunny = 0; // 宣告一個資料型態為 _Bool,變數名稱為 sunny,初始化資料為 0 的變數
    _Bool raining = 1; // 宣告一個資料型態為 _Bool,變數名稱為 raining,要初始化資料為 1 的變數
}

為了更方便利用 _Bool 這個資料型態,我們可以引入 stdbool.h 這個標頭檔。

以下程式範例與上一個程式範例結果相同

#include <stdbool.h>

int main()
{
    bool sunny = false;
    bool raining = true;
}

通常,整數 0 代表「否定」;整數 1 代表「肯定」,利用 stdbool.h 中的擴展,可以更清楚表達程式碼的意義。

浮點類型

浮點類型分為三種:實數浮點、複數浮點、虛數浮點。為簡化學習複雜度,此處僅探討實數浮點(以下簡稱浮點數)。

浮點數的定義為「帶有小數或指數的數值」,浮點數可根據小數的支援數量分為單精度浮點數 float、倍精度浮點數 double、長倍精度浮點數 long double

浮點數並無 unsigned,因為在 IEEE 754 的定義中,浮點數都會具備符號位(sign bit)。

浮點數使用範例如下

int main()
{
    float zero = 0.0;
    float negativeZero = -0.0;

    double large = 2e10; // 2e10 代表 2*10^10
}

小知識:浮點數中的 0.0-0.0 在數值上是相等,但在記憶體中儲存的資料是不同的。

results matching ""

    No results matching ""