数据类型
下图一处错误:默认带符号那儿的框框应该指向整数型那一栏
浮点型没有unsigned/signed的概念
类型 | 含义 | 最小尺寸 | 尺寸 |
---|---|---|---|
bool | 布尔类型 | 未定义 | 1字节 |
chat | 字符 | 8位 | 1字节 |
wchar_t | 宽字符 | 16位 | |
char16_t | Unicode字符 | 16位 | |
char32_t | Unicode字符 | 32位 | |
short | 短整型 | 16位 | 2字节 |
int | 整型 | 16位 | 4字节 |
long | 长整型 | 32位 | 4字节 |
long long | 长整型 | 64位 | 8字节 |
float | 单精度浮点数 | 6位有效数字 | 4字节 |
double | 双精度浮点数 | 10位有效数字 | 8字节 |
long double | 扩展精度浮点数 | 10位有效数字 | 16字节 |
计算机以 “比特序列” 存储数据-------每个比特非0即1
可寻址的最小内存块成为 “字节” ----大多数机器的字节由8比特构成
存储的基本单位成为 “字” -------------大多数机器的字由32(4字节)或64(8字节)比特构成
类型决定了数据所占的比特数以及如何解释这些比特的内容
C++提供的几种字符类型,其中多数支持国际化;
基本的字符类型是char–>一个char的空间应确保可以存放机器基本字符集中任意字符对应的数字值–>一个char的大小和一个机器字节一样.
类型转换
强制转换原则:
其他–>bool: //注意一个非布尔值作为条件的时候,它的类型会自动转换为布尔值
- 存在/满足/数值不为0------->bool=1;
- 不存在/不满足/数值为0---->bool=0;
bool–>其他:
- bool=1---->整数型和浮点型=1/char对应"标题开始"
- bool=0---->整数型和浮点型=0/char对应NULL
unsigned–>signed:
signed–>unsigned://注意算术表达式中既含有符号数又含有无符号数时,符号数会自动强制转化为无符号数
- 转化为取模后的值
浮点型–>整数型:
- 近似处理,只保留小数点之前的部分
整数型–>浮点型:
- 小数部分记为0
字面值常量
转义序列:
1.不可打印字符:如退格符换行符…
2.特殊含义字符:如双引号,问号…
意义 | 转义符 | 意义 | 转义符 | 意义 | 转义符 | ||
---|---|---|---|---|---|---|---|
换行符 | \t | 退格符 | \b | 回车符 | \r | ||
横向制表符 | \t | 纵向制表符 | \v | 进纸符 | \f | ||
报警铃 | \a | 双引号 | \" | 单引号 | \’ | ||
反斜线 | \\ | 问号 | \? | ||||
报警铃 | \7 | 换行符 | \12 | 空格 | \40 | ||
空字符 | \0 | 字符M | \115 | 字符M | \x4d |
倒数两行属于泛化的转义序列. 上面6个只是一些示例,可以自己以此类推
格式为—
- 1.\x后紧跟1~多个十六进制数字
- 2.\ 后紧跟1~3个八进制数字
关于制定字面值的类型,暂时不会用到,所以不写了.
没有short类型的字面值常量
变量
1.什么是变量?
变量提供一个具名的,可供程序操作的存储空间;
每个变量都有对应一个数据类型;(可以认为是创建了一个"该类型下" 的 “对象”)
2.变量的初始化和赋值?
1.初始化不是赋值
2.如何初始化和赋值都要根据该变量所属的数据类型来判断
3.关于默认初始化
- 定义于任何函数体之外的变量被初始化为0; //有例外
- 每个类各自决定其初始化的方式 ( 是否允许不经初始化就定义对象也由类自己决定 )
- 绝大多数类都支持无须显示初始化而定义对象
- 一些类要求每个对象都显示初始化
- 定义于函数体内的内置类型的对象如果没有初始化,则其值未定义
4.赋值初始化方法:
- int a=0;
- int a(0);
- int a={0};
- int a{0};
下面两种属于列表初始化------
如果使用列表初始化且存在丢失信息的风险时,编译器将报错,也就是说会出现不合法的情况;
但是如果使用上面两种方法,编译器不会报错,但信息是丢失了.
3.声明和定义?
分离式编译 //大概知道,不写了
4.标识符? //变量命名注意事项
1.要能体现实际含义
2.由数字,字母,下划线组成
3.一般使用小写/一般用大写开头
4.数字不能在开头
5.不能命名为关键字,也最好不要命名为库标识符
5.变量作用域?