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(没有符号扩展)。
  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.指定字面值的类型。

原文地址:https://www.cnblogs.com/zoneofmine/p/7224388.html