學C51的基礎2《數據類型 》

 2. 數據類型
在Turbo C語言中, 每個變量在使用之前必須定義其數據類型。Turbo C有以下幾種類型: 整型(int)、浮點型(float)、字符型

(char)、指針型(*)、無值型(void)以及結構(struct)和聯合(union)。其中前五種是Turbo C的基本數據類型、後兩種數據類型(結
構和聯合)將在第五章介紹。
2.1 整型(int)
一、整型數說明
加上不同的修飾符, 整型數有以下幾種類型;
signed short int 有符號短整型數說明。簡寫為short或int, 字長為2字節共16位二進制數, 數的範圍是-32768 ~
32767。
signed long int 有符號長整型數說明。簡寫為long, 字長為4字節共32位二進制數, 數的範圍是-2147483648 ~
2147483647。
unsigned short int 無符號短整型數說明。簡寫為unsigned int, 字長為2字節共16位二進制數, 數的範圍是0 ~
65535。
unsigned long int 無符號長整型數說明。簡寫為unsigned long,字長為4字節共32位二進制數, 數的範圍是0 ~
4294967295。
二、整型變量定義
可以用下列語句定義整型變量
int a, b; /*a、b被定義為有符號短整型變量*/
unsigned long c; /*c被定義為無符號長整型變量*/
三、整型常數表示
按不同的進制區分, 整型常數有三種表示方法:
十進制數: 以非0開始的數
如:220, -560, 45900
八進制數: 以0開始的數

如:06; 0106, 05788
十六進制數:以0X或0x開始的數
如:0X0D, 0XFF, 0x4e
另外, 可在整型常數後添加一個"L"或"l"字母表示該數為長整型數, 如22L,0773L, 0Xae4l。
2.2 浮點型(float)
一、浮點數說明
Turbo C中有以下兩種類型的浮點數:
float 單浮點數。字長為4 個字節共32 位二進制數,數的範圍是3.4x10-38E~3.4x10+38E。
double 雙浮點數。字長為 8個字節共 64 位二進制數,數的範圍是1.7x10-308E~1.7x10+308E
說明:
浮點數均為有符號浮點數, 沒有無符號浮點數。
二、浮點型變量定義
可以用下列語句定義浮點型變量:
float a, f; /*a, f被定義為單浮點型變量*/
double b; /*b被定義為雙浮點型變量*/
三、浮點常數表示
例如: +29.56, -56.33, -6.8e-18, 6.365
說明:
1. 浮點常數只有一種進制(十進制)。
2. 所有浮點常數都被默認為double。
3. 絕對值小於1的浮點數, 其小數點前面的零可以省略。如:0.22可寫為.22,-0.0015E-3可寫為
-.0015E-3。
4. Turbo C默認格式輸出浮點數時, 最多隻保留小數點後六位。
2.3 字符型(char)

加上不同的修飾符, 可以定義有符號和無符號兩種類型的字符型變量, 例如:
char a: /*a被定義為有符號字符變量*/
unsigned char l; /*l被定義為無符號字符變量*/
字符在計算機中以其ASCII碼方式表示, 其長度為1個字節, 有符號字符型數取值範圍為-128~127, 無符號字符型數到值範圍是
0~255。因此在Turbo C語言中,字符型數據在操作時將按整型數處理, 如果某個變量定義成char, 則表明該變量是有符號的, 即它
將轉換成有符號的整型數。
Turbo C中規定對ASCII碼值大於0x80的字符將被認為是負數。例如ASCII 值為0x8c的字符, 定義成char時, 被轉換成十六進制
的整數0xff8c 。這是因當ASCII碼值大於0x80時, 該字節的最高位為1, 計算機會認為該數為負數,對於0x8c表示的數實際上是-74
(8c的各位取反再加1), 而-74 轉換成兩字節整型數並在計算機中表示時就是0xff8c( 對0074 各位取反再加1)。因此只有定義為
unsigned char 0x8c 轉換成整型數時才是8c。這一點在處理大於0x80的ASCII碼字符時(例如漢字碼)要特別注意。一般漢字均定義
為unsigned char(在以後的程序中會經常碰到)。
另外, 也可以定義一個字符型數組(關於數組後面再作詳細介紹), 此時該數組表示一個字符串。
例如:

char str[10];
計算機在編譯時, 將留出連續10個字符的空間, 即str[0]到str[9]共10個變量, 但只有前9個供用戶使用。第10個str[9]用來
存放字符串終止符NULL即"\0", 但終止符是編編譯程序自動加上的, 這一點應特別注意。
二、字符常數表示
能用符號表示的字符可直接用單引號括起來表示, 如'a','9','Z',也可用該字符的ASCII碼值表示, 例如十進制數85表示大寫
字母'U', 十六進制數0x5d表示']', 八進制數0102表示大寫字母'B'。
一些不能用符號表示的控制符, 只能用ASCII碼值來表示, 如十進制數10 表示換行,十六進制數0x0d表示回車, 八進制數033表
示Esc。Turbo C2.0中也有另外一種表示表示方法, 如'\033'表示Esc,這裡'\0'符號後面的數字表示十六進制的ASCII值當然這種表
示方法也適用於可睦接用符號表示的字符。
另外, Turbo C2.0中有些常用的字符用以下特殊規定來表示:
規定符 等價於 含義
'\f' '\X0C' 換頁
'\r' '\X0D' 回車
'\t' '\X09' 製表鍵
'\n' '\X0A' 換行
'\\' '\X5C' \符
'\'' '\X27' '符
'"' '\X22' "符
對於字符串常量, 一般用雙引號括起來表示, 如"Hello Turbo C2.0"。
2.4 指針型(*)

指針是一種特殊的數據類型, 在其它語言中一般沒有。指針是指向變量的地址,實質上指針就是存貯單元的地址。根據所指的
變量類型不同,可以是整型指針 (int *)、浮點型指針 (float *)、字符型指針 (char *)、結構指針 (struct *) 和聯合指針
(union *)(結構指針和聯合指針將在第4節中介紹)。
2.5 無值型(void)
無值型字節長度為0,主要有兩個用途:一是明確地表示一個函數不返回任何值; 一是產生一個同一類型指針(可根據需要動態分
配給其內存)。
例如:
void *buffer; /*buffer被定義為無值型指針*/ 摘自《C51BBS離線版光盤》

學C51的基礎2《數據類型 》


分享到:


相關文章: