C語言數據類型
在C語言編程,數據類型是一個廣泛係統指用於聲明變量或不同類型的功能。變量的類型決定了多少空間占用存儲和存儲的方式。
在C語言中的類型可分類如下:
S.N. | 類型和說明 |
---|---|
1 |
基本類型: 它們是算術類型,由這兩種類型:(a)的整數類型和(b)浮點類型 |
2 |
枚舉類型: 它們也是算術類型,用來定義可以隻在整個程序被分配的某些獨立的整數值的變量 |
3 |
void類型: 類型說明符空(viod)表示冇有值可用 |
4 |
派生類型: 它們包括:(a)指針類型,(b)數組類型,(c)結構類型,(d)聯合類型及(e)函數類型 |
數組類型和結構類型被統稱為聚合類型。函數的類型指定函數的返回值的類型。我們將看到基本類型在下麵的部分,而其他類型將包括在即將到來的章節。
整型
下表為有關其存儲大小和值範圍標準的整數類型的詳細信息:
類型 | 存儲大小 | 值範圍 |
---|---|---|
char | 1 byte | -128 to 127 or 0 to 255 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 2 or 4 bytes | -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647 |
unsigned int | 2 or 4 bytes | 0 to 65,535 or 0 to 4,294,967,295 |
short | 2 bytes | -32,768 to 32,767 |
unsigned short | 2 bytes | 0 to 65,535 |
long | 4 bytes | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 bytes | 0 to 4,294,967,295 |
為了得到一個類型或在特定平台上的變量的確切大小,可以使用sizeof操作符。表達式sizeof(type)得到以字節為單位的對象或類型的存儲大小。下麵是一個例子來得到任何機器上的int類型的大小:
#include <stdio.h> #include <limits.h> int main() { printf("Storage size for int : %d ", sizeof(int)); return 0; }
當在Linux編譯和執行上麵的程序它產生以下結果:
Storage size for int : 4
浮點類型
下表是提供有關存儲大小和值範圍及其精密標準浮點類型的詳細信息:
類型 | 存儲大小 | 值範圍 | 精確 |
---|---|---|---|
float | 4 byte | 1.2E-38 到 3.4E+38 | 6 小數 |
double | 8 byte | 2.3E-308 到 1.7E+308 | 15 小數 |
long double | 10 byte | 3.4E-4932 到 1.1E+4932 | 19 小數 |
頭文件float.h中定義的宏,可以使用這些值和其他有關細節實數在程序的二進製表示。下麵的例子將打印用一個浮點數類型及其範圍值的存儲空間:
#include <stdio.h> #include <float.h> int main() { printf("Storage size for float : %d ", sizeof(float)); printf("Minimum float positive value: %E ", FLT_MIN ); printf("Maximum float positive value: %E ", FLT_MAX ); printf("Precision value: %d ", FLT_DIG ); return 0; }
當在Linux編譯和執行上麵的程序,它產生以下結果:
Storage size for float : 4 Minimum float positive value: 1.175494E-38 Maximum float positive value: 3.402823E+38 Precision value: 6
void類型
void類型指定不值可用。這是用在三種情況:
S.N. | 類型及描述 |
---|---|
1 |
函數返回值為 void 各種函數在C語言不返回值,也可以說它們返回void。不返回值的函數的返回類型為void。例如:void exit (int status); |
2 |
函數參數為 void 函數在C語言中不接受任何參數。不帶參數的函數可以接受空白(void)。例如:int rand(void); |
3 |
指針指向 void void *類型的指針表示對象的地址,而不是它的類型。例如,內存分配函數void *malloc( size_t size ); 返回一個指向 void,可強製轉換為任何數據類型 |
void類型可能不容易理解,所以讓我們將介紹在即將到來的章節這些概念。