

C++ primer plus(二)简单数据类型
source link: https://mronne.github.io/2020/04/01/C++-primer-plus-%E4%BA%8C-%E7%AE%80%E5%8D%95%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

C++ primer plus(二)简单数据类型
- 宽度(width)用于描述存储整数时使用的内存量。
- 字节(byte)通常指的是8位的内存单元。
- 可以通过sizeof判断类型所占的字节数。
创建符号常量
- 使用预处理器编译指令,在编译时查找文件中对应的变量将其替换为数字。
#define INT_MAX 32767
- C++中更好的创建符号常量的方法是使用const。
- C++ 11提供另一种初始化方法,大括号中不包含任何东西时将被初始化为0
int wrens(32); int wrens = {24}; int wrens {24};
无符号类型
- 对于有符号整型,如果超越了限制,其值将为范围另一端的取值。
整型类型的选择
- 一般选择在范围内的所占内存最小的类型
- 仅当有大型整型数组时,才有必要使用short
整型字面值
- 如果第一位是1~9,则基数为10(十进制 DEC)
- 如果第一位是0,第二位为1~7,则基数为8(八进制 OCT)
- 如果前两位是0x或者0X,则基数为16(十六进制 HEX)
使用cout进行不同进制输出时
int num = 42;
cout << hex;
cout << num <<endl; //以十六进制输出
- 控制符hex实际是一条消息,告诉cout采用何种行为。
C++ 确定整型类型
- 使用后缀表达特定类型
- u或U表示unsigned int
- ul表示unsigned long
- L表示long
- LL表示long long
- 值太大不能存储为int
- 程序使用推个字符会将光标退到上一次输入的位置

- 以两个下划线或下划线和大写字母打头的名称保留给编译器使用。以一个下划线开头的名称用作全局标识符。
- ‘A’的ASCII码为65
- ‘a’的ASCII码为97
const限定符
const相比于宏定义的好处
- 能够明确指定类型
- 可以使用C++的作用域规则将定以限制在特定的作用域中
- 可以将const用于更复杂的类型
- 在C++中还可以使用const值来声明数组的长度
- float通常为32位,double通常为64位
- 默认定义的浮点常量属于double类型,如果希望常量为float类型,使用f或F后缀。
- 对于float,C++只保证6位有效位。
算术运算符
- 对于求模运算符,两个操作数必须都是整型,将该运算符用于浮点数将导致编译错误。
- 当两个运算符的优先级相同时,C++将看操作数的结合性是从左到右还是从右到左。
- 整型提升:在计算表达式时,C++会将bool、char、unsigned char、signed char和short转为int,计算机使用这种类型时,运算速度最快

- 强制类型转换:强制类型转换不会修改变量本身,而是创建一个新的、指定类型的值
(typeName) value //C语言中的转换 typeName (value) //C++中的转换
auto声明
- 显示声明变量时,使用auto的帮助并不大,反而会导致自动推断类型产生一些错误
- 在处理复杂类型时,使用自动类型推断可以减少代码量。 ` std::vector scores; std::vector::iterator pv = scores.begin(); //C++ 98
std::vector scores; auto pv = scores.begin(); //C++ 11
# 问题
- 为什么C++有多种整型?
> 可以根据需要选择适当的类型。可以使用不同的类型来提高计算速度。
- C++提供了什么措施来防止超出整型的范围?
> C++没有提供自动防止超出整型限制的功能,可以使用头文件climits来确定限制情况。
- 下面两条语句是否等价?
char grade = 65; char grade = ‘A’;
> 在使用ASCII码的系统上,他们是等价的。第二条语句还可用于其他编码的系统。65是一个int常量,而'A'是一个char常量。
- 找出编码88表示的字符
char c = 88; cout « c « endl;
cout.put(char(88));
cout « char(88) « endl;
cout « (char)88 « endl; `
- 将long值赋给float变量会导致舍入误差,将long值赋给double变量呢?将long long赋给double变量呢?
取决于两个类型的长度。如果long为4个字节,则没有损失。因为最大的long值为20亿,即有10位数。由于double提供了至少13位有效数字,因而不需要进行任何舍入。long long 类型可提供19位有效数字,超过了double保证的13位有效数字的精度。
Recommend
-
137
Kotlin Primer·第七章·协程库(中篇) ...
-
40
-
9
Mybatis-Plus是一款相当优秀的开源框架, 为单表操作提供了极大的便利. 这次阿航在写服务端时, 需要对MySQL的json类型字段进行操作, 忙活了一阵, 终于找到了解决方案, 并在本篇文章进行记录. 需具备的条件 本篇文章环境: 环境...
-
9
简单两条命令让群晖存储空间类型为RAID1或者SHR无损转换成Basic 2021年11月22日 0条评论 229次阅读...
-
6
C++ Primer学习笔记02:基本内置类型 Posted on 2022-03-10...
-
9
C++ Primer学习笔记04:复合类型 Posted on 2022-03-29...
-
1
#include<iostream> 这是预处理器编译指令,在编译时自动运行,iostream文件的内容将取代程序中的代码行。原始文件没有被修改,而是将源代码和iostream组成一个复合文件,在编译的下一阶段使用该文...
-
11
Rust中将数组转为集合类型的简单方法 解道Jdon ...
-
5
跟踪 Linux 系统的硬件是...
-
4
Banner设计就这么简单!4 种类型、5 种布局一次掌握 1月 31, 2024 发表于: 视觉设计.
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK