【C/C++ 学习笔记】数据类型
视频地址: Bilibili
数据类型用于给变量分配合适的内存空间
整型
数据类型 | 占用空间 | 取值范围 |
---|---|---|
short | 2 | [ − 2 15 , 2 15 − 1 ] [-2^{15}, 2^{15}-1] [−215,215−1] |
int | 4 | [ − 2 31 , 2 31 − 1 ] [-2^{31}, 2^{31}-1] [−231,231−1] |
long | Windows 为 4 字节,Linux 为 4 字节(32 位)或 8 字节(64 位) | |
long long | 8 | [ − 2 63 , 2 63 − 1 ] [-2^{63}, 2^{63}-1] [−263,263−1] |
将取值范围记为 [min, max]
,假设数组 num 超过了上界,则 n u m 内存 = m i n + n u m 真实 − m a x − 1 num_{内存} = min + num_{真实} - max - 1 num内存=min+num真实−max−1,假设数组 num 超过了下界,则 n u m 内存 = m a x + n u m 真实 − m i n + 1 num_{内存} = max + num_{真实} - min + 1 num内存=max+num真实−min+1
利用 sizeof 关键字可以统计数据类型的内存大小
实型(浮动型)
数据类型 | 占用空间 | 取值范围 |
---|---|---|
float | 4 | 7 位有效数字 |
double | 8 | 15 ~ 16 位有效数字 |
- 在 C++ 中,小数点前的部分也属于有效数字
- 默认情况下,编辑器会把小数当作双精度,通过在小数后面加一个 f 表示是单精度
- 默认情况下,无论是 float 还是 double 只会打印展示 6 个有效数字
- 可以用 xey 表示 x ∗ 1 0 y x * 10^{y} x∗10y
字符型
- 用于表示单个字符,只能用单引号且仅有 0/1 个字符
- 占用 1 个字节内存
- 不会把字符本身放在内存,而是把 ASCII 编码放入存储单元
- 通过强转可以得到字符的 ASCII 编码
转义字符
用于表示一些不能显示出来的特殊 ASCII 字符
转义字符 | 含义 |
---|---|
\a | 警报 |
\b | 退格 |
\f | 换页 |
\n | 换行,光标移到下一行开头 |
\r | 回车,光标移到当前行开头 |
\t | 垂直指表 |
\v | 垂直制表 |
\t 是 8 格
字符串类型
用于表示一串字符
C 语言风格
char str[] = "Hello";
C++ 语言风格
#include <string>string str[] = "Hello";
需要引入头文件
布尔类型
代表真或假的值,只有两个值 true / false,占用一个字节
只要是非 0 值都为真
打印布尔类型会显示 0 / 1
数据输入
用于从键盘获取数据 cin >> 变量
全部代码
#include <iostream>
#include <string>using namespace std;int main() {short num1 = -32770;int num2 = 20;long num3 = 30;long long num4 = 40;cout << num1 << endl;cout << "Size of short: " << sizeof(num1) << endl;cout << num2 << endl;cout << "Size of short: " << sizeof(num2) << endl;cout << num3 << endl;cout << "Size of short: " << sizeof(num3) << endl;cout << num4 << endl;cout << "Size of short: " << sizeof(num4) << endl;float num5 = 3.14f;double num6 = 3.1415926;cout << num5 << endl;cout << "Size of short: " << sizeof(num5) << endl;cout << num6 << endl;cout << "Size of short: " << sizeof(num6) << endl;char ch = 'A';cout << ch << endl;cout << "Size of short: " << sizeof(ch) << endl;cout << "Ascii: " << (int)ch << endl;char str1[] = "Hello";string str2 = "World";cout << str1 << endl;cout << "Size of short: " << sizeof(str1) << endl;cout << str2 << endl;cout << "Size of short: " << sizeof(str2) << endl;bool flag = true;cout << flag << endl;cout << "Size of short: " << sizeof(flag) << endl;int int1;cin >> int1;cout << "The input is: " << int1 << endl;return 0;
}