整型,字元型,布林型,浮點型
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;這是微軟專用的用來表達8位,16位,32位,64位的整數,其他平台就無法識別了。而有的平台是這樣的typedef int int16_t;
但它們都指定了int16_t這個型別是16位的整數,只不過乙個是用int實現的,乙個是用short實現的。
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...