Primer C++ 第五版 第二章基本内置类型

1. 算术类型

【区分】
1 Byte (字节)= 8 bit(比特数)

由4或者8字节构成
算术类型分为整型空类型

1.1 整型

1.1.1 布尔类型

【bool】
没有最小尺寸

取值只有(true)或者(false)

1.1.2 字符型

char 字符

扩展字符集:

wchar_t 宽字符
Unicode字符:

char16_t
char32_t

1.1.3 整型

short
int
long
long long

扫描二维码关注公众号,回复: 12758910 查看本文章

1.2 浮点型

单精度 float(1个字) 7个有位数字
双精度 double(2个字) 16个有位数字
扩展精度值 long double(3或者4个字) 按照需求实现

1.3 带符号类型与无符号类型

带符号类型signed 包括 正数、负数、0
无符号类型unsigned 包括 正数 与 0

1.3.1 “特殊”的字符型

字符型分为以下三种:
char
signed char
unsigned char

char 与 unsigned char 不同,由于字符划分三类,但是只有俩种符号类型,所以:
char类型由编译器自身决定是否带符号

1.3.2 与"理论"不同的unsigned char

理论上是 -127到127
实际应用中为 -128到127

1.4 类型选择

①如果数值超过 int 型的范围,那么选择 long long 型。

②算术表达式里面尽量避免bool和char。

因为char型在一些机器上是无符号,在一些机器上面是有符号,所以使用unsigned char 或者 signed char有利于区别符号。

③当为浮点型的时候,用 double 型

1.5 类型转换

1.5.1 布尔类型与非布尔类型

非布尔型转化布尔型:
只要该值不为0,则全为true,如果该值为0,则为false。

布尔型转化非布尔型:
初始值为false,为0;初始值为true,为1。

2 字面值常量 – “一望而知”

每个字面值常量都对应一个数据类型

字符常量的形式和值决定了它的数据结构

2.1整型和浮点型字面值

0开头是八进制(020)
0x或者0X开头是十六进制(0x67)

十进制字面值的类型:int ,long, long long 里面尺寸最小(int)

short 没有字面值常量

严格而言:十进制字面值常量没有负数
-42是负字面值常量,但负号不在字面值常量中
它的作用仅仅只是字符值取负值而已。

浮点型字面值是一个 double ,用科学计数法表示的指数,指数部分用e或者E表示:
1.23e3 == 1230

2.2 字符和字符串字面值

字符字面值:‘ a ’
字符串字面值: ” a “
字符串字面值的实际长度要比它的内容多一
例如:” a “ = ‘ a ’ + ‘ \0 ’ (空字符)

多行字符串字面符:

std::cout << "a really things "
             "that is ...." << std::endl;

2.3 转义序列

不能直接使用的俩种:
1 . 不可打印的字符
没有可视的图符,比如退格或者其他控制字符
2 . 特殊含义的字符
单引号,双引号,问号,反斜线

转义序列:以反斜线为开始
\ \ (反斜线)
\ ? (问号)
\n (换行)
\ " (双引号)
\ ’ (单引号)

\ x 后面紧跟一个或者多个十六进制数字
\ 后面跟一个,俩个或者三个八进制数字(多于3个数字,只纳入3个有效

例子:

\ 115(字符M)
\ x4d(字符M)
\ 7(响铃)
\ 12(换行符)
\ 0(空字符)

 std::cout << "hi, \x4d O \115 ! " << std::endl;
 //输出:hi, M O M !

2.4 布尔字面值和指针字面值

布尔类型的字面值:true和false

指针字面值:nullptr

猜你喜欢

转载自blog.csdn.net/weixin_42198265/article/details/112706578
今日推荐