Like Share Discussion Bookmark Smile

J.J. Huang   2019-10-07   C   瀏覽次數:

C語言 - 第三章 | Basic I/O - 基礎五型

什麼是基礎五型?

C語言之中,型態是所有資料儲存的基本,想要儲存資料,得先分清楚型態是什麼,也因此在輸出之後,緊接而來的就是「型態」。

我們可以透過宣告某個型態的「變數」,來儲存該類型的「資料」,而C語言的型態共有五種,分別是intfloatdoublechar以及void


int

int,全文是integer,也就是我們中文所說的「整數」,舉凡01這類沒有特殊符號的數字,都可以用int來儲存。
C語言中,一個int變數就是占用4 bytes的記憶體空間,換言之,它所能保存的數值範圍只有2147483647 ~ -2147483648

1
2
3
4
int a = 1;
int b = -1;
int c = 2147483647;
int d = -2147483647;

註:int的儲存範圍定義在limits.h中,會根據系統及函式庫實作上而有所差別,基準值為2147483647(or greater) ~ -2147483647(or less)git p

而輸出時,我們要使用一些方式來讓printf()認得這是整數(int)

1
printf("%d\n", num);

格式控制字元 意義
%d 輸出有號整數
%o 輸出無號八進位整數
%x 輸出無號十六進位整數(小寫)
%X 輸出無號十六進位整數(大寫)
1
2
3
4
printf("%d\n", 10); // 10
printf("%o\n", 10); // 12
printf("%x\n", 10); // a
printf("%X\n", 10); // A

註:因此一個整數就可以有四種輸出變化,不過要特別注意的是,轉換輸出成八進位及十六進位是沒有正負號的。


float

float,中文稱為「浮點數」,用比較耳熟能詳的單字就是「小數」,負責去儲存0.1、-1.2、0.0這種帶有小數點的數字。
C語言中,float是一個單精度浮點數,一個float變數就是占用4 bytes的記憶體空間,通常小數點後六位之後的運算都可能會有誤差。

1
2
3
float a = 0.1;
float b = -1.2;
float c = 0.0;

而輸出時,我們要使用一些方式來讓printf()認得這是整數(float)

1
printf("%f\n", num);

如果你是指數愛好者,或許你會比較喜歡以科學記號方式來顯示

1
2
3
4
printf("%e\n", num);
printf("%E\n", num);
printf("%g\n", num);
printf("%G\n", num);

註:%e%E的差別在於英文字母E的大小寫,而%g%G則分別是取%e%E%f較短的那個。


double

double,中文稱為「倍精度浮點數」,簡單來說,double也是拿來儲存小數的型態,只不過可以存的比較精準。 在C語言中,一個double變數就是占用8 bytes的記憶體空間,通常小數點後15位之後的運算都可能會有誤差。

1
2
3
double a = 0.1;
double b = -1.2;
double c = 0.0;

要輸出一個double變數跟輸出float很類似,只要加個符號就好

1
printf("%lf\n", num);


char

char,全文是character,中文稱為「字元」,可以儲存ASCII表上所有的字元,其中就包括了所有的標點符號、英文字母及數字。
C語言中,一個char只占用了1 byte的記憶體空間,不過實際上使用的只有7 bits,換言之,真正儲存範圍只有-127 ~ 127
在定義字元的時候,我們可以用單引號(')將字母或標點符號夾住來表示該字元,或者是用對應的ASCII碼。


1
2
char ch  = 'A';
char ch2 = 65;

在廣義上,char屬於整數家族的一員,因此charint在數值不大的狀況下可以直接進行轉換。

而要輸出一個字元,我們可以簡單的使用

1
printf("%c\n", ch);

註:另外,值得一提的是,我們先前所提到的格式控制字元,全部都是char所可以儲存的。


void

void,中文稱為「空」、「虛無」,是整個C語言中最特別的型態,因為void變數不能儲存任何資料。
基本上,當你定義了void變數的時候,就會得到一個錯誤。


範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>

int main()
{
int a = 1;
int b = -10;
int c = 48;
float d = 99.5;
double e = 99.555555555;
char f = '0';
char g = '\a';

printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
printf("%f\n", d);
printf("%lf\n", e);
printf("%c\n", f);
printf("%c\n", g);

return 0;
}

註:'/a'會沒有顯示出來,但是會Bell一聲唷。


補充

C語言中也有一些特殊字元,通常以反斜線\開頭

字元 說明
‘\0’ 空字元,用於字串的結束
‘\n’ New Line,換行符號
‘\r’ Carriage Return,回歸鍵(即 Enter 鍵)
‘\t’ Tab,跳格
‘\b’ Backspace,倒退鍵
‘\a’ Bell,嗶一聲
‘\‘ 反斜線 \
‘'‘ 單引號 ‘
‘"‘ 雙引號 “

註:以上參考了
hackersir gitbooks