大多数编程语言通过两种方式来进一步补充其基本特性:一是赋予程序员自定义数据类型的权利,从而实现对语言的扩展;二是将一些有用的功能封装成库函数提供给程序员。
C++是一种静态数据类型语言,它的类型检查发生在编译时。因此,编译器必须知道程序中每一个变量对应的数据类型。
基本内置类型
C++定义了一套包括算术类型和空类型(void)在内的基本数据类型。其中算术类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值,仅用于一些特殊的场合,例如最常见的是,当函数不返回任何值时,使用空类型作为返回类型。
算术类型
|
类型 |
含义 |
最小尺寸 |
|
bool |
布尔类型 |
未定义 |
|
char |
字符 |
8位 |
|
wchar_t |
宽字符 |
16位 |
|
char16_t |
Unicode字符 |
16位 |
|
char32_t |
Unicode字符 |
32位 |
|
short |
短整型 |
16位 |
|
int |
整型 |
16位 |
|
long |
长整型 |
32位 |
|
long long |
长整型 |
64位 |
|
float |
单精度浮点数 |
6位有效数字 |
|
double |
双精度浮点数 |
10位有效数字 |
|
long double |
扩展精度浮点数 |
10位有效数字 |
声明和定义的关系:
声明使得名字为程序所知,一个文件如果想使用别处定义的名字则必须对包含对那个名字的声明。
定义负责创建与名字关联的实体。
除去布尔型和扩展的字符型外,其他整型可以划分为signed何unsigned两种类型。
int、short和long long都是带符号的,通过在类型名前添加unsigned就可以得到无符号类型。unsigned int可以缩写为int。
如何选择类型:
当明确知晓数值不可能为负时,选用无符号类型;
使用int执行整数运算;
执行浮点数运算选用double。因为float通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无几。
类型转换
类型所能表示的值的范围决定了转换的过程。
程序应该尽量避免依赖于实现环境的转换。
切勿混用带符号类型和无符号类型,因为表达式中既有带符号类型又有无符号类型时,带符号类型会自动转换为无符号类型。
字面值常量
42是一个字面值常量。每个字面值常量对应一种类型,字面值常量的形式和值决定了它的数据类型。
以0开头的整数代表八进制数,以0x或0X开头的代表十六进制;
由单引号’’括起来的一个字符称为char型字面值;双引号括起来的零个或多个字符构成字符串字面值。
转义字符
指定字面值类型
前缀: u U L u8
后缀: 整型字面值 u U l L ll LL;浮点型字面值 f F l L
布尔型字面值:true false
指针型字面值:nullptr
浙公网安备 33010602011771号