C 學習 基本資料型別

2021-08-10 07:40:32 字數 3390 閱讀 1701

整型,字元型,布林型,浮點型

c/c++標準只定義了最低的位數,而不是必需的固定位數

- bool 布林型

- char 字元型 8位

- wchar_t 寬字元型 16位

- short 短整型 16位

- int 整形 16位

- long 長整形 32位

- float 單精度浮點型 6為有效數字

- double 雙精度浮點型 10位有效數字

- long double 擴充套件精度浮點型 10位有效數字

這些類的長度並不一定是固定的,跟系統平台有關。

signed nchar = 100;

unsigned uchar = 100;

cout

<< nchar << ", "

<< uchar << endl;

輸出:d,d

float 單精度浮點型,最少32位,通常32位,6為有效數字

double 雙精度浮點型,最少48位,通常64位, 10位有效數字

long double,擴充套件精度浮點型,通常為80,96或128位,10位有效數字

l/l表示long型別,如100l。

u/u表示unsigned int型別,如100u

ul表示unsigned long型別,如100ul

ull表示unsigned long long型別,如100ull

8進製表示法,第一位0,後面位數1-7,如042,值是34

16進製表示法,0x/0x開頭,其他位數0-f,如0xa5,值是165

一般基本資料型別是,但是它們的型別長度在不同平台可能不一樣

這些是標準中指定的代表位數的型別

它們的實現其實是基於typedef定義而來的,在stdint.h標頭檔案中有定義。

typedef

signed

char int8_t;

typedef

short int16_t;

typedef

int int32_t;

typedef

long

long int64_t;

typedef

unsigned

char uint8_t;

typedef

unsigned

short uint16_t;

typedef

unsigned

int uint32_t;

typedef

unsigned

long

long uint64_t;

因為它是乙個標準標頭檔案,其他平台stdint.h中的這些定義可能會不一樣,但是至少會確保定義的這些型別,位數是對應的,所以可以用它們來適配型別長度固定的整型。

例如有的平台是這樣的typedef short int16_t;

而有的平台是這樣的typedef int int16_t;

但它們都指定了int16_t這個型別是16位的整數,只不過乙個是用int實現的,乙個是用short實現的。

這是微軟專用的用來表達8位,16位,32位,64位的整數,其他平台就無法識別了。

int8_t這種是標準定義的型別,但卻不能保證所有平台都會使用這個標準,例如微軟就定義它的__int8這種型別。那為了適配,我們需要重新定義它。

//如果是微軟編譯器平台,則使用微軟提供的整型定義,否則使用標準的整型定義

#ifdef _msc_ver

typedef

signed __int8 int8;

typedef

unsigned __int8 uint8;

typedef

signed __int16 int16;

typedef

unsigned __int16 uint16;

typedef

signed __int32 int32;

typedef

unsigned __int32 uint32;

typedef

signed __int64 int64;

typedef

unsigned __int64 uint64;

#else

#include

typedef int8_t int8;

typedef uint8_t uint8;

typedef int16_t int16;

typedef uint16_t uint16;

typedef int32_t int32;

typedef uint32_t uint32;

typedef int64_t int64;

typedef uint64_t uint64;

#endif

size_t表示無符號的整型,它是用來記錄大小的資料型別。在32位系統中,size_t是4個位元組,64位系統中,size_t是8個位元組。

size_t一般是用sizeof操作符得到的,表示大小。

size_t的定義是

#ifndef _size_t_defined

#ifdef _win64

typedef unsigned __int64 size_t;

#else

typedef _w64 unsigned int size_t;

#endif

#define _size_t_defined

#endif

表示雙位元組或寬位元組的字元型別,用於表達其他一些字元,例如中文字元。

c++11新增的字元型,分別是16位和32位的無符號的型別,專門用於表示字元

char16_t用法

使用字首u

char16_t ch1 = u'g'; 用16位表示的字元g,

char16_t* str1 = u'be good'; 用16位字元表示的字串be good

char32_t用法

使用字首u

char32_t ch1 = u'g'; 用32位表示的字元g

char32_t* str1 = u'be good'; 用32位字元表示的字串be good

C 基本資料型別

型別識別符號 型別說明 長度 位元組 範圍備註 char字元型 1 128 127 27 27 1 unsigned char無符字元型 10 255 0 28 1 short int短整型 2 32768 32767 2 15 215 1 unsigned short int無符短整型 20 65...

C 基本資料型別

1.基本資料型別 程式中的變數都是先定義,後使用的。對變數的定義,可以包括三個方面 資料型別 儲存型別 作用域。所謂資料型別是按被定義變數的性質,表示形式,佔據儲存空間的多少,構造特點來劃分的。在c語言中,資料型別可分為 基本資料型別 構造資料型別,指標型別 空型別。基本型別 整型 字元型 實型 浮...

C 基本資料型別

型別別名位 允許的值 sbyte system.sbyte 8在 128 127 之間的整數 byte system.byte 8在 0 255 之間的整數 short system.int16 16在 32 768 32 767 之間的整數 ushort system.uint16 16在 0 6...