C 資料類型


在 C 語言中,資料類型指的是用來宣告不同類型的變數或函數的一個廣泛的系統。變數的類型決定了變數儲存所佔用的空間,以及如何解釋儲存的位元模式。

C 中的型別可分為以下幾種:

3void 類型:
#序號類型與描述

#1基本類型:
它們是算術類型,包括兩種類型:整數類型和浮點類型。
2枚舉類型:
它們也是算術類型,被用來定義在程式中只能賦予​​其一定的離散整數值的變數。
#類型說明符 void
表示沒有可用的值。
4

衍生型別:

它們包含:指標型別、陣列型別、結構型別、共用體型別和函式型別。

陣列類型和結構類型統稱為聚合類型。函數的型別指的是函數傳回值的型別。在本章節接下來的部分我們將介紹基本類型,其他幾種類型會在後邊幾個章節中進行解釋。 類型儲存大小值範圍char1 位元組-128 到127 或0 到255unsigned char1 位元組#0 到255signed char1 位元組-128 到127#int2 或4 位元組-32,768到32,767 或-2,147,483,648 到2,147,483,647unsigned int2 或4 位元組0 到65,535 或##2 或4 位元組##294,#967,##short2 位元組-32,768 到32,767unsigned short2 位元組0 到65,535long4 位元組-2,147,483,648 到2,147,483,647
整數類型下表列出了關於標準整數類型的儲存大小和值範圍的細節:
0 到65,535 或
###### ###unsigned long######4 位元組######0 到4,294,967,295############

注意,各種類型的儲存大小與系統位數有關,但目前通用的以64位元系統為主。

以下列出了32位元系統與64位元系統的儲存大小的差異(windows 相同):

為了得到某個類型或某個變數在特定平台上的準確大小,您可以使用sizeof 運算子。表達式 sizeof(type) 得到物件或類型的儲存位元組大小。下面的實例示範了取得int 類型的大小:

#include <stdio.h>#include <limits.h>int main(){
   printf("int 存储大小 : %lu \n", sizeof(int));   
   return 0;}

當您在Linux 上編譯並執行上面的程式時,它會產生下列結果:

int 存储大小 : 4

浮點類型

下表列出了關於標準浮點類型的儲存大小、值範圍和精確度的細節:

##儲存大小值範圍精度float4 位元組1.2E-38 到3.4E+38 6 位元小數double#8 位元組2.3E-308 到1.7E+30815 位元小數long double16 位元組3.4E-4932 到1.1E+4932#19位元小數
類型
頭檔float.h 定義了宏,在程式中可以使用這些值和其他有關實數二進位表示的細節。下面的實例將輸出浮點類型所佔用的儲存空間以及它的範圍值:

#include <stdio.h>#include <float.h>int main(){
   printf("float 存储最大字节数 : %lu \n", sizeof(float));
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );   
   return 0;}

當您在Linux 上編譯並執行上面的程式時,它會產生下列結果:

float 存储最大字节数 : 4 float 最小值: 1.175494E-38float 最大值: 3.402823E+38精度值: 6

void 類型

void 類型指定沒有可用的值。它通常用於以下三種情況:

#序號#類型與描述##1#函數傳回為空C 中有各種函數都不傳回值,或者您可以說它們傳回空。不傳回值的函數的傳回類型為空。例如函數參數為空C 中有各種函數不接受任何參數。不帶參數的函式可以接受一個 void。例如#指標指向void類型為void * 的指針代表物件的位址,而不是類型。例如,記憶體分配函數

##1
void exit (int status);
2
int rand(void);
3
void *malloc( size_t size );

傳回指向 void 的指針,可以轉換為任何資料型別。

#########如果現在您還是無法完全理解 void 類型,不用太擔心,在後續的章節中我們將會詳細講解這些概念。 ######