文章目录
1. 基本内置类型
这一部分内容要注意的东西其实不是特别多
1)算术类型
算术类型可以分为两类:整型(字符和布尔类型也算在内)和浮点型
算术类型的尺寸
值得注意一下
-
字符型
字符:char(8位)
宽字符:wchar_t (16位)
Unicode字符:char16_t(16位)、char32_t(32位) -
浮点型
单精度float:6位有效数字
双精度double:10位有效数字
拓展双精度long double:10位有效数字
这里的有效数字是指按照IEEE标准的浮点数中按十进制可以保证的有效数字
详细可以参考
- https://blog.csdn.net/sinat_38972110/article/details/82117072?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
注意有效数字是指浮点数中尾数可以保证的精度
带符号类型与无符号类型
- 字符型被分为了三种:
char/unsigned char/signed char
- 一般编译器决定
char
为带符号还是不带符号 - int也类似,事实上这里牵扯到一个信息安全相关的知识,不带符号的更容易导致错误,但带符号的更符合现实逻辑。
建议:如何选择类型
- 知晓不可能为负,选用无符号类型
- 使用int执行整型运算,不够用则用longlong
- 算术表达式中尽可能不要用到
char
或bool
- 执行浮点数运算选用
double
:计算时间相差不多(甚至更快)
2)类型转换
类型所能表示的值的范围决定了转换的过程:
-
浮点数与整型之间的相互转换
浮点数转为整型可能存在近似处理
整型转为浮点数可能存在精度损失
-
无符号数与有符号数之间的相互转换
实际上二进制表示不发生改变,这样的转换有时可能导致不好的后果
无符号数与有符号数混用将统一为无符号数
无符号数的不谨慎使用可能产生不良后果,如下:
for (unsigned int i = k; i--; i >= 0){ //for循环将无法终止 do_something(); }
3)字面值常量
整型和浮点型字面值
- 整型:
088
八进制,88
十进制,0x88
十六进制 - 浮点型:
3.1415e0
科学计数法,0.
,.001
字符和字符串常量
略
转义字符
- 转义字符中,如果
\
后跟着数字则表示八进制,如\123
,表示八进制数123
,最多为三位
指定字面值类型
以上为primer C++书中出现的指定字符和字符串字面值的前缀和后缀符号
2. 变量
1)变量定义
语法
- 类型说明符 标识符;
初始值
-
定义了后对象可以马上使用
-
初始化不等于赋值
初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象当前的值擦除,以一个新的值来代替
-
列表初始化
利用花括号进行初始化,不仅适用于基本内置类型也适用于自定义对象。
int units_sold = {0};
- 利用列表初始化内置变量时,若初始值丢失,则可能存在风险。(即花括号中包含变量的情况)
默认初始化