C語言 - 第三章 | Basic I/O - 基礎五型
什麼是基礎五型?
C語言之中,型態是所有資料儲存的基本,想要儲存資料,得先分清楚型態是什麼,也因此在輸出之後,緊接而來的就是「型態」。
我們可以透過宣告某個型態的「變數」,來儲存該類型的「資料」,而C語言的型態共有五種,分別是int、float、double、char以及void。
int
int,全文是integer,也就是我們中文所說的「整數」,舉凡0、1這類沒有特殊符號的數字,都可以用int來儲存。
在C語言中,一個int變數就是占用4 bytes的記憶體空間,換言之,它所能保存的數值範圍只有2147483647 ~ -2147483648。
1 | int a = 1; |
註:
int的儲存範圍定義在limits.h中,會根據系統及函式庫實作上而有所差別,基準值為2147483647(or greater) ~ -2147483647(or less)git p
而輸出時,我們要使用一些方式來讓printf()認得這是整數(int)
1 | printf("%d\n", num); |

| 格式控制字元 | 意義 |
|---|---|
| %d | 輸出有號整數 |
| %o | 輸出無號八進位整數 |
| %x | 輸出無號十六進位整數(小寫) |
| %X | 輸出無號十六進位整數(大寫) |
1 | printf("%d\n", 10); // 10 |
註:因此一個整數就可以有四種輸出變化,不過要特別注意的是,轉換輸出成八進位及十六進位是沒有正負號的。

float
float,中文稱為「浮點數」,用比較耳熟能詳的單字就是「小數」,負責去儲存0.1、-1.2、0.0這種帶有小數點的數字。
在C語言中,float是一個單精度浮點數,一個float變數就是占用4 bytes的記憶體空間,通常小數點後六位之後的運算都可能會有誤差。
1 | float a = 0.1; |
而輸出時,我們要使用一些方式來讓printf()認得這是整數(float)
1 | printf("%f\n", num); |

如果你是指數愛好者,或許你會比較喜歡以科學記號方式來顯示
1 | printf("%e\n", num); |
註:
%e及%E的差別在於英文字母E的大小寫,而%g和%G則分別是取%e及%E和%f較短的那個。

double
double,中文稱為「倍精度浮點數」,簡單來說,double也是拿來儲存小數的型態,只不過可以存的比較精準。 在C語言中,一個double變數就是占用8 bytes的記憶體空間,通常小數點後15位之後的運算都可能會有誤差。
1 | double a = 0.1; |
要輸出一個double變數跟輸出float很類似,只要加個符號就好
1 | printf("%lf\n", num); |

char
char,全文是character,中文稱為「字元」,可以儲存ASCII表上所有的字元,其中就包括了所有的標點符號、英文字母及數字。
在C語言中,一個char只占用了1 byte的記憶體空間,不過實際上使用的只有7 bits,換言之,真正儲存範圍只有-127 ~ 127。
在定義字元的時候,我們可以用單引號(')將字母或標點符號夾住來表示該字元,或者是用對應的ASCII碼。
1 | char ch = 'A'; |
在廣義上,char屬於整數家族的一員,因此char跟int在數值不大的狀況下可以直接進行轉換。
而要輸出一個字元,我們可以簡單的使用
1 | printf("%c\n", ch); |
註:另外,值得一提的是,我們先前所提到的格式控制字元,全部都是
char所可以儲存的。

void
void,中文稱為「空」、「虛無」,是整個C語言中最特別的型態,因為void變數不能儲存任何資料。
基本上,當你定義了void變數的時候,就會得到一個錯誤。
範例
1 |
|
註:
'/a'會沒有顯示出來,但是會Bell一聲唷。

補充
C語言中也有一些特殊字元,通常以反斜線\開頭
| 字元 | 說明 |
|---|---|
| ‘\0’ | 空字元,用於字串的結束 |
| ‘\n’ | New Line,換行符號 |
| ‘\r’ | Carriage Return,回歸鍵(即 Enter 鍵) |
| ‘\t’ | Tab,跳格 |
| ‘\b’ | Backspace,倒退鍵 |
| ‘\a’ | Bell,嗶一聲 |
| ‘\‘ | 反斜線 \ |
| ‘'‘ | 單引號 ‘ |
| ‘"‘ | 雙引號 “ |
註:以上參考了
hackersir gitbooks
