1. 程式人生 > >C++ Primer 筆記——基本內置類型

C++ Primer 筆記——基本內置類型

結束 mar png src nbsp 單位 轉換成 title 名稱

1.算術類型分為兩類:整型和浮點型。算術類型的尺寸在不同機器上有所差別,下表列出了C++標準規定的尺寸的最小值。同時允許編譯器賦予這些類型更大的尺寸。

技術分享

一個char的大小和一個機器字節一樣。

一個int至少和一個short一樣大;

一個long至少和一個int一樣大;

一個long long至少和一個long一樣大;

以下摘自MSDN:

類別類型內容
整數 char 類型 char 是通常包含基本執行字符集成員的整數類型 - 默認情況下,這是 Microsoft C++ 中的 ASCII。
C++ 編譯器將 charsigned charunsigned
char 類型的變量視為不同類型。char 類型的變量將提升到 int,就像它們在默認情況下是 signed char 類型一樣,除非使用 /J 編譯選項。 在這種情況下,它們被視為 unsigned char 類型並提升為 int(沒有符號擴展)。
bool bool 類型是可以具有 truefalse 這兩個值之一的整數類型。 其大小未指定。
short short int 類型(或 short)是大於或等於 char 類型的大小但小於或等於 int 類型的大小的整型類型。
short 類型的對象可聲明為 signed
shortunsigned shortSigned shortshort 的同義詞。
int int 類型是大於或等於 short int 類型的大小但小於或等於 long 類型的大小的整數類型。
int 類型的對象可聲明為 signed intunsigned intSigned intint 的同義詞。
__int8, __int16, __int32, __int64, __int128 固定大小的整數 __int``n,其中 n 是整數變量的大小(以比特為單位)。 (__int8__int16
__int32__int64__int128 是 Microsoft 專用的關鍵字。 並非所有類型在所有體系結構上都可用。)
long long 類型(或 long int)是大於或等於 int 類型的大小的整數類型。
long 類型的對象可聲明為 signed longunsigned longSigned longlong 的同義詞。
long long 大於無符號 long
long long 類型的對象可聲明為 signed long longunsigned long longSigned long longlong long 的同義詞。
wchar_t, __wchar_t wchar_t 類型的變量指定寬字符或多字節字符類型。 默認情況下,wchar_t 是本機類型,但可以使用 /Zc: wchar_t- 使 wchar_t 成為 unsigned short 的 typedef。__wchar_t 類型是本機 wchar_t 類型的 Microsoft 專用同義詞。
在字符或字符串文本前使用 L 前綴可指定寬字符類型。
浮點 float float 類型是最小的浮點類型。
double double 類型是大於或等於 float 類型的大小但小於或等於 long double 類型的大小的浮點類型。
Microsoft 專用:long doubledouble 的表示形式完全相同。 但是,long doubledouble 是不同的類型。
long double long double 類型是大於或等於 double 類型的浮點類型。

Microsoft 專用

下表列出了 Microsoft C++ 中的基礎類型所需的存儲量。  

類型大小
bool, char, unsigned char, signed char, __int8 1 個字節
__int16, short, unsigned short, wchar_t, __wchar_t 2 個字節
float, __int32, int, unsigned int, long, unsigned long 4 個字節
double, __int64, long double, long long 8 個字節
__int128 16 個字節

下表中指定的範圍均包含起始值和結束值。

類型名稱字節其他名稱值的範圍
int 4 signed –2,147,483,648 到 2,147,483,647
unsigned int 4 unsigned 0 到 4,294,967,295
__int8 1 char –128 到 127
unsigned __int8 1 unsigned char 0 到 255
__int16 2 short、short int、signed short int –32,768 到 32,767
unsigned __int16 2 unsigned short、unsigned short int 0 到 65,535
__int32 4 signed、signed int、int –2,147,483,648 到 2,147,483,647
unsigned __int32 4 unsigned、unsigned int 0 到 4,294,967,295
__int64 8 long long、signed long long –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned __int64 8 unsigned long long 0 到 18,446,744,073,709,551,615
bool 1 false 或 true
char 1 -128 到 127(默認)
0 到 255(當使用 /J 編譯時)
signed char 1 –128 到 127
unsigned char 1 0 到 255
short 2 short int、signed short int –32,768 到 32,767
unsigned short 2 unsigned short int 0 到 65,535
long 4 long int、signed long int –2,147,483,648 到 2,147,483,647
unsigned long 4 unsigned long int 0 到 4,294,967,295
long long 8 無(與 __int64 等效) –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long long 8 無(與無符號的 __int64 等效) 0 到 18,446,744,073,709,551,615
enum varies 請參閱本文後面的備註
float 4 3.4E +/- 38(7 位數)
double 8 1.7E +/- 308(15 位數)
long double 與 double 相同 與 double 相同
wchar_t 2 __wchar_t 0 到 65,535

2.當我們賦給無符號類型一個超出它範圍的值時,結果是初始值對無符號類型表示數值總數取模後的余數。當我們賦給帶符號類型一個超出它表示範圍的值時,結果是未定義的。

3.當一個算術表達式中既有無符號數又有int值時,那個int值就會轉換成無符號數。

4.以0開頭的整數代表八進制,以0x 0X開頭的代表十六進制數。

5.指定字面值的類型。

技術分享

C++ Primer 筆記——基本內置類型