-
概述
C++11的标准发布已经有一段日子了,相比于C++03,C++11标准包含核心语言的新机能,而且扩展C++标准程序库,并入了大部分的C++ Technical Report 1程序库。本系列记录了学习C++11的部分内容,方便日后查阅。
-
差异
1. C++03中的基本算术类型包括9种,列举如下:
类型 | 含义 | 最小存储空间 |
---|---|---|
bool | 布尔值 | 未定义 |
char | 字符型 | 8字节 |
wchar_t | 宽字符 | 16字节 |
short | 短整型 | 16字节 |
int | 整型 | 16字节 |
long | 长整型 | 32字节 |
float | 单精度浮点数 | 6位数精度 |
double | 双精度浮点数 | 10位数精度 |
long double | 更高精度的浮点数 | 10位数精度 |
2. C++11中的基本算术类型包括12种,C++11的基本类型完全包含上述9种类型,除此之外还包括:
类型 | 含义 | 最小存储空间 |
---|---|---|
char16_t | Unicode 字符 | 16字节 |
char32_t | Unicode 字符 | 32字节 |
long long | 超长整型 | 64字节 |
C++11标准中的char16_t和char32_t用来处理Unicode字符,
char16_t可以作为UTF-16的一个处理单元,char32_t可以作为UTF-32编码的一个处理单元。
使用过程中需要使用前缀: u和U
char16_t a = '\x30';
wchar_t b = L'\xffef';
char16_t c = u'\u00f6';
char32_t d = U'\U0010FFFF';
很遗憾的是在Visual Studio 2013中并没有提供char16_t和char32_t的支持,二者只是简单的一个类型重定义:(yvals.h头文件中)
typedef unsigned short char16_t;
typedef unsigned int char32_t;