C語言中有四種基本資料類型—整型、浮點型、指針和聚合類型(數組和結構等)。其他類型由此四種派生而成。
1、 整數類型
整型包含:字元(char),整型(int),長整型(long)和短整型(short),都分為有符号(signed)和無符号(unsigned)兩種。
按位數有short<=int<=long,其中short至少16位,long至少32位。是以雖然直覺上會認為short比較短,long比較長,但實際上兩者可能一樣長,而int的位數則由編譯器決定。是以在設計數值計算時,應該确定其位數,做好溢出處理。
字元char占用八位,設計的目的在于容納字元資料,但本質上是小整型。char在用關鍵字signed/unsigned修飾的時候與其他幾種整型有一個差別。一般,對int,long,short,當不用signed/unsigned修飾時,預設為signed,但char的預設值與編譯器有關。
下表為不同類型的位數和範圍
類型 | 占用位數 | 數值範圍 |
char | 8位 | (一般隻用0~127) |
signed char | 8位 | -127~127 |
unsigned char | 8位 | 0~255 |
(signed) int | 16位或32位 | — |
unsigned int | 同int | — |
(signed) long (int) | 不小于32位 | -2147483647~2147483647 |
unsigned long (int) | 同long | 0~4294967295 |
(signed) short (int) | 不小于16位 | -32767~32767 |
unsigned short (int) | unsigned short (int) | 0~65535 |
(signed) long long (int) | 64位 | 範圍太長 |
(unsigned) long long (int) | 同long long | 範圍太長 |
一、整型變量的聲明和初始化
整型變量的聲明形式為: 關鍵字 變量名;(中間空格隔開)
如:
int a;
初始化則是在聲明之後對變量賦初始值
如:
直接int a = 1;
或 int a;a = 1;
最常見的是按十進制指派,也可按八進制和十六進制指派,在數字前面加一個0則為八進制指派,加0x或0X則為十六進制指派。
當用八進制指派時,數字不在0~7之間會提示錯誤,十六進制亦然。
如:
int a = 012;//8進制12,十進制為10。
inta = 0x11;//十六進制11,十進制為17。
inta = 018;//編譯器提示錯誤。
計算機通過編碼将特定的字元用特定的整數值來表示,一般采用ASCII碼。是以對char類型的指派有兩種形式。一種是直接數字指派,一種是用字元指派,字元由’ ’括起來。
如:
chara = ‘A’;
chara = 96;//兩者都是聲明字元變量a,初始化為字元A。
chara;a = “X”;//錯誤,正确方式:a = ‘X’;
二、整型常量
當代碼中用到如123這樣的數字時,編譯器以最小可容納該數值的類型來存儲相應數字。也可以通過一些字尾來指定存儲類型。L(或小寫l)字尾表明數字為long類型,U(或小寫u)字尾表明數字為unsigned類型,兩者可以組合使用。
如:
123U為unsigned int 類型
123UL為 unsigned long 類型
123ULL為unsigned long long 類型
字元常量一般以’單個字元’來表示。
2、 浮點型
浮點型包含float,double和long double類型,用來表示不同精度的小數。本文不做讨論。
3、 指針
變量的值在計算機的記憶體中占用一個特定的位置和相應大小的空間。記憶體與位址一一對應,是以,通過位址就能得到其上變量的值。指針是一種值為位址的資料類型。本文不做詳細讨論。
4、 格式化輸出
Printf()、scanf ()函數時與程式通信的I/O接口。調用printf()通過特定的轉換說明符可以列印出相應的資料。
常用轉換符:
轉換說明 | 輸出 |
%c | 一個字元 |
%s | 字元串 |
%d | 有符号十進制整數 |
%u | 無符号十進制整數 |
%o | 無符号八進制整數 |
%x或%X | 無符号十六進制整數 |
%p | 指針 |
%f | 十進制浮點數 |
%e或%E | 浮點數的e-計數法,E-計數法 |
修飾符:
修飾符 | 說明 |
h | 輸出short類型。%hd,%hx,%hu分别為十進制short,十六進制short,十進制unsigned short |
l | 輸出long類型。%ld,%lu分别輸出 long int和unsigned long int |
ll | 輸出long long類型。%lld,%llu,同上 |
# | 輸出進制格式。%#x,%#X,%#o分别輸出0x,0X,0這三種進制的字首 |
%數字 | 輸出的位寬,%7輸出為7位寬,數字向右對齊,數字為負時,相左對齊。 |