C++ Primer 筆記——基本內置類型
阿新 • • 發佈:2017-07-23
結束 mar png src nbsp 單位 轉換成 title 名稱
1.算術類型分為兩類:整型和浮點型。算術類型的尺寸在不同機器上有所差別,下表列出了C++標準規定的尺寸的最小值。同時允許編譯器賦予這些類型更大的尺寸。
一個char的大小和一個機器字節一樣。
一個int至少和一個short一樣大;
一個long至少和一個int一樣大;
一個long long至少和一個long一樣大;
以下摘自MSDN:
類別 | 類型 | 內容 |
---|---|---|
整數 | char |
類型 char 是通常包含基本執行字符集成員的整數類型 - 默認情況下,這是 Microsoft C++ 中的 ASCII。C++ 編譯器將 char 、signed char 和 unsigned char 類型的變量視為不同類型。char 類型的變量將提升到 int ,就像它們在默認情況下是 signed char 類型一樣,除非使用 /J 編譯選項。 在這種情況下,它們被視為 unsigned char 類型並提升為 int (沒有符號擴展)。 |
bool |
bool 類型是可以具有 true 或 false 這兩個值之一的整數類型。 其大小未指定。 |
|
short |
short int 類型(或 short )是大於或等於 char 類型的大小但小於或等於 int 類型的大小的整型類型。short 類型的對象可聲明為 signed short 或 unsigned short 。Signed short 是 short 的同義詞。 |
|
int |
int 類型是大於或等於 short int 類型的大小但小於或等於 long 類型的大小的整數類型。int 類型的對象可聲明為 signed int 或 unsigned int 。Signed int 是 int 的同義詞。 |
|
__int8 , __int16 , __int32 , __int64 , __int128 |
固定大小的整數 __int``n ,其中 n 是整數變量的大小(以比特為單位)。 (__int8 、__int16 __int32 、__int64 和 __int128 是 Microsoft 專用的關鍵字。 並非所有類型在所有體系結構上都可用。) |
|
long |
long 類型(或 long int )是大於或等於 int 類型的大小的整數類型。long 類型的對象可聲明為 signed long 或 unsigned long 。Signed long 是 long 的同義詞。 |
|
long long |
大於無符號 long 。long long 類型的對象可聲明為 signed long long 或 unsigned long long 。Signed long long 是 long 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 double 和 double 的表示形式完全相同。 但是,long double 和 double 是不同的類型。 |
|
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 筆記——基本內置類型