C 資料型別

2021-07-11 08:06:10 字數 3842 閱讀 3406

c語言中資料型別用於申明變數或函式。型別是對資料分配儲存單元的安排,包括儲存單元的長度(占有位元組)以及資料的儲存形式。

c語言中資料型別分為以下幾種:

型別描述

基本型別

屬於算術型別,包括整數型別和浮點型別

列舉型別(enum)

屬於算術型別,程式中使用者定義的整數型別

空型別(void)

表示沒有值可用

派生型別

包括:指標型別、陣列型別、結構體型別、共用體型別、函式型別

其中,算術型別(arithmetic type)和指標型別統稱為純量型別(scalar type),陣列型別和結構體型別統稱為組合型別(aggregate type),函式型別用於定義函式的返回值和引數的型別。

以下是在64位系統下整數型別的詳情:

型別儲存大小

值範圍描述

(signed) char(有符號字元型)

1byte

-128~127

有符號8位整數

unsigned char (無符號字元型)

1byte

0~255

無符號8位整數

(signed)short(有符號短整型)

2byte

-32768~32767

有符號16位整數

unsigned short(無符號短整型)

2byte

0~65535

無符號16位整數

(signed)int(有符號基本整形)

4byte

-2147483648~2147483647

有符號32位整數

unsigned int(無符號基本整型)

4byte

0~4294967295

無符號32位整數

(signed)long long int(有符號雙長整型)

8byte

-9223372036854775808~9223372036854775807

有符號64位整數

unsigned long long int (無符號雙長整型)

8byte

0~18446744073709551615

無符號64位整數

_bool(布林型)

1byte

1(true),0(false)

8位整數

在stdint.h和stdbool.h中對精確寬度整數型別及其大小限制有下列定義:

typedef signed char int8_t;

typedef unsigned char uint8_t;

typedef short int16_t;

typedef unsigned short uint16_t;

typedef int int32_t;

typedef unsigned uint32_t;

typedef long long int64_t;

typedef unsigned long long uint64_t;

typedef bool _bool

typedef true 1

typedef false 0

#define int8_min (-128)

#define int16_min (-32768)

#define int32_min (-3247483647 - 1)

#define int64_min (-9223372036854775807ll - 1)

#define int8_max 127

#define int16_max 32767

#define int32_max 2147483647

#define int64_max 9223372036854775807ll

#define uint8_max 0xff /*255u*/

#define uint16_max 0xffff /*65535*/

#define uint32_max 0xffffffff /*4294967295u*/

#define uint64_max 0xffffffffffffffff /*18446744073709551615ull*/

浮點型別詳情:

型別位元組數

取值範圍(絕對值)

有效位數

float

41.175494e-38~3.402823e+38

6double

82.225074e-308~1.797693e+308

15long double

163.362103e-4932~1.189731e+4932

18 這些資訊在標頭檔案float.h中均作出了定義。給出獲取型別位元組數、取值範圍(絕對值)、有效位數:

int main(int arg,char* argv)
執行結果:

單精度浮點型儲存位元組大小:4

單精度浮點型取值範圍(絕對值):1.175494e-38~3.402823e+38

單精度浮點型有效位數:6

雙精度浮點型儲存位元組大小:8

雙精度浮點型取值範圍(絕對值):2.225074e-308~1.797693e+308

雙精度浮點型有效位數:15

長雙精度型儲存位元組大小:16

長雙精度型取值範圍(絕對值):3.362103e-4932~1.189731e+4932

長雙精度型有效位數:18

c99中提供了複數支援,用兩個兩同的浮點型別分別表示複數的實部和虛部,例:float _complex  = float +float*i.並可以分別通過creal(float _complex)和cimag(float _complex)函式獲取該複數的實部和虛部。具體定義於標頭檔案complex.h中。

printf("單精度浮點型複數位元組大小:%lu\n",sizeof(float _complex));

printf("雙精度浮點型複數位元組大小:%lu\n",sizeof(double _complex));

printf("長雙精度型複數位元組大小:%lu\n",sizeof(long double _complex));

執行結果:

單精度浮點型複數位元組大小:8

雙精度浮點型複數位元組大小:16

長雙精度型複數位元組大小:32

所謂列舉是指將變數的值一一枚舉出來,變數指限於列舉出來的值的範圍內取值。

enum color;

enum color red = red;

printf("red = %d\n",red);

enum color blue = blue;

printf("blue = %d\n",blue);

enum color black = black;

printf("black = %d\n",black);

enum color yellew = yellew;

printf("yellew = %d\n",yellew);

執行結果:

red = 0

blue = 1

black = 5

yellew = 6

void型別指沒有可用值,一般出現於下列三種情況:

型別函式返回為空

不返回值的函式的返回型別為空,例如:void exit()

函式引數為空

不帶引數的函式,可以接收乙個void,例如:int rand(void)

指標指向為空

C 資料型別

一般來說,計算機要儲存和處理不同的資料型別,在c 中有基本的資料型別和使用者自定義資料型別以及引用型資料。我們先學習下基本的資料型別,也就是系統自帶的資料型別。每種資料型別都要佔據系統記憶體的一定空間,例如c 中的整數int 乙個整數佔4個位元組,也就是32位 計算機是用0和1二進位制來表示和處理資...

c 資料型別

型別可分為 值型別,引用型別 值型別 直接存放真正的資料,值型別都有固定的長度,值型別的變數都儲存在 堆疊 stack 上。作為值型別的變數,每個都有自己的資料,因此對乙個變數的操作不會影響其他變數。引用型別 儲存讀資料的記憶體位址的引用,位於受管制的堆 heap 上作為引用型別的變數可以引 用同一...

C 資料型別

bool system.boolean 1位元組 byte system.byte 1位元組無符號 sbyte system.sbyte 1位元組有符號 short system.int16 2位元組 ushort system.uint16 2位元組 int system.int32 4位元組 u...