learncpp-4 基本数据类型
4 基本数据类型
4.1 基本数据类型介绍
- 比特、字节、内存地址
- 变量是一块可以存储信息的内存的名称
- 内存的最小单元是比特,但是每个内存地址对应一个字节
- 内存里的所有数据都是一串比特,所以我们使用数据类型来告诉编译器如何以某种有意义的方式来解释/翻译内存的内容
4.8 浮点数
- 默认情况下,浮点数字面量的类型是double
- 浮点类型只能精确地表示一定数量的有效数字,如果有效数字数量太多的话可能会丢失精度
例如,float类型的精度为6-9位,这意味float可以精确表示的数最多有6个有效数字,如果有效数字的个数大于6则可能会丢失精度
- 输出浮点数时,
std::cout
的默认精度是6,也就是假定所有浮点变量只有6个有效数字;可以使用std::setprecision
改变输出浮点数的精度 - 尽量使用double而不是float,因为float的精度更低
永远不要
假设浮点数是精确的- 默认情况下,小数部分为0的浮点数在输出时不包含小数位(例如,5.0输出为5)
4.12 类型转换
- 类型转换
- 类型转换不会改变原来的值,而是将原来的值作为输入,使用直接初始化生成一个目标类型的新值
- 隐式类型转换可能会丢失数据
- 括号初始化可以确保初始值在隐式类型转换时不会丢失数据:
int x{5.5}
会编译报错(这也是为什么推荐使用大括号初始化的主要原因之一) - 显式类型转换
static_cast
static_cast
不会进行范围检查,所以如果待转换的值不在目标类型的范围内,则会导致未定义的行为
std::int8_t
和std::unit8_t
会被大多数编译器当做字符而不是整数来处理
合集:
learncpp学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结