首页 > 代码库 > C++ Primer 笔记——基本内置类型

C++ Primer 笔记——基本内置类型

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(没有符号扩展)。
 boolbool 类型是可以具有 truefalse 这两个值之一的整数类型。 其大小未指定。
 shortshort int 类型(或 short)是大于或等于 char 类型的大小但小于或等于 int 类型的大小的整型类型。
 short 类型的对象可声明为 signed shortunsigned shortSigned shortshort 的同义词。
 intint 类型是大于或等于 short int 类型的大小但小于或等于 long 类型的大小的整数类型。
 int 类型的对象可声明为 signed intunsigned intSigned intint 的同义词。
 __int8, __int16, __int32, __int64, __int128固定大小的整数 __int``n,其中 n 是整数变量的大小(以比特为单位)。 (__int8__int16__int32__int64__int128 是 Microsoft 专用的关键字。 并非所有类型在所有体系结构上都可用。)
 longlong 类型(或 long int)是大于或等于 int 类型的大小的整数类型。
 long 类型的对象可声明为 signed longunsigned longSigned longlong 的同义词。
 long long大于无符号 long
 long long 类型的对象可声明为 signed long longunsigned long longSigned long longlong long 的同义词。
 wchar_t, __wchar_twchar_t 类型的变量指定宽字符或多字节字符类型。 默认情况下,wchar_t 是本机类型,但可以使用 /Zc: wchar_t- 使 wchar_t 成为 unsigned short 的 typedef。__wchar_t 类型是本机 wchar_t 类型的 Microsoft 专用同义词。
在字符或字符串文本前使用 L 前缀可指定宽字符类型。
浮点floatfloat 类型是最小的浮点类型。
 doubledouble 类型是大于或等于 float 类型的大小但小于或等于 long double 类型的大小的浮点类型。
Microsoft 专用:long doubledouble 的表示形式完全相同。 但是,long doubledouble 是不同的类型。
 long doublelong double 类型是大于或等于 double 类型的浮点类型。

 

Microsoft 专用

下表列出了 Microsoft C++ 中的基础类型所需的存储量。  

类型大小
bool, char, unsigned char, signed char, __int81 个字节
__int16, short, unsigned short, wchar_t, __wchar_t2 个字节
float, __int32, int, unsigned int, long, unsigned long4 个字节
double, __int64, long double, long long8 个字节
__int12816 个字节

 

下表中指定的范围均包含起始值和结束值。

类型名称字节其他名称值的范围
int4signed–2,147,483,648 到 2,147,483,647
unsigned int4unsigned0 到 4,294,967,295
__int81char–128 到 127
unsigned __int81unsigned char0 到 255
__int162short、short int、signed short int–32,768 到 32,767
unsigned __int162unsigned short、unsigned short int0 到 65,535
__int324signed、signed int、int–2,147,483,648 到 2,147,483,647
unsigned __int324unsigned、unsigned int0 到 4,294,967,295
__int648long long、signed long long–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned __int648unsigned long long0 到 18,446,744,073,709,551,615
bool1false 或 true
char1-128 到 127(默认)
0 到 255(当使用 /J 编译时)
signed char1–128 到 127
unsigned char10 到 255
short2short int、signed short int–32,768 到 32,767
unsigned short2unsigned short int0 到 65,535
long4long int、signed long int–2,147,483,648 到 2,147,483,647
unsigned long4unsigned long int0 到 4,294,967,295
long long8无(与 __int64 等效)–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long long8无(与无符号的 __int64 等效)0 到 18,446,744,073,709,551,615
enumvaries请参阅本文后面的备注
float43.4E +/- 38(7 位数)
double81.7E +/- 308(15 位数)
long double与 double 相同与 double 相同
wchar_t2__wchar_t0 到 65,535

 

 

2.当我们赋给无符号类型一个超出它范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。当我们赋给带符号类型一个超出它表示范围的值时,结果是未定义的。

 

3.当一个算术表达式中既有无符号数又有int值时,那个int值就会转换成无符号数。

 

4.以0开头的整数代表八进制,以0x 0X开头的代表十六进制数。

 

5.指定字面值的类型。

技术分享

 

C++ Primer 笔记——基本内置类型