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