Skip to content

Commit 2fdae88

Browse files
committed
feat(docs): Add basic data types
1 parent 2fd2e6f commit 2fdae88

7 files changed

Lines changed: 195 additions & 6 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
</h2>
4141
</div>
4242

43+
<!-- start elevator-pitch -->
44+
4345
编写这本书的初衷是为了让自己在学习 C++ 的过程中能够对于一些知识点有一个更深刻的记忆,同时也希望能够整理出更加系统化的 C++ 学习路线,让更多 C++ 的爱好者能够有一个良好的开始完美的结束。
4446

4547
* 本书分为四个部分
@@ -48,6 +50,8 @@
4850
* **数据库**: 数据存储、数据库语句……
4951
* **图形框架**: TUI 与 GUI
5052

53+
<!-- end elevator-pitch -->
54+
5155
<div align="center">
5256
<h2>
5357
在线阅读

source/Language Core/Chapter-1/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
```{toctree}
66
:maxdepth: 6
7-
:caption: 学前准备:
87
98
Section-01
109
Section-02
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
# 基本数据类型
2+
3+
在 C++ 中,数据类型(Data Type)是⼀种属性,它告诉编译器如何解释存储在计算机内存中的⼀段数据。数据类型决定了数据的存储⼤⼩、布局、值范围以及可以对该数据执⾏哪些操作。
4+
5+
C++ 提供了多种数据类型,包括基本数据类型、复合数据类型和特殊数据类型,本篇主要讲解的是 C++ 的基本数据类型。
6+
7+
C++ 的基本数据类型分为 "五类",分别是`整数型``浮点型``字符型``布尔型``空类型`。它们在各自对应的应用场景中都有着不可或缺的重要性,接下来对这些数据类型进行逐步的学习。
8+
9+
### 整数型
10+
11+
整数型可以理解为在内存中开辟一个专门用于存储数字的空间,根据要存放的数字大小可以采用不同的整数型关键字来开辟所需大小的空间。
12+
13+
在整数类型中有四位管理员它们分别管理着自己的空间大小它们分别是: `short``int``long``long long`,接下来使用表格来直观的查看它们的区别。
14+
15+
| 类型 | (通常)占用大小(字节) | 范围 | 备注 |
16+
| ----------- | -------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------- |
17+
| `short` | 2 | `-32,768``32,767` | |
18+
| `int` | 4 | `-2,147,483,648``2,147,483,647` | 标准只保证至少有16位,但现代系统上通常是32位。 |
19+
| `long` | **4 或 8** | 依赖于系统和编译器 | 至少为32位。在32位系统和64位Windows上通常为4字节;在64位Linux/macOS上通常为8字节。 |
20+
| `long long` | 8 | `-9,223,372,036,854,775,808``9,223,372,036,854,775,807` | 标准保证至少有64位。 |
21+
22+
```{note}
23+
在上方的表格中可以直观的看到这些类型所能够管理的最大和最小的空间,如果使用例如 `short` 来管理超过它所能够管理范围的整数数据那么这份数据就会损坏出错。
24+
```
25+
26+
```{admonition} 举个栗子 🌰
27+
:class: note
28+
29+
尝试使用 `short` 类型存储正整数超过 `32,767` 的数据,例如: `32,768`.
30+
```
31+
32+
```{admonition} 👨‍💻 代码演示
33+
34+
```CPP
35+
#include <iostream>
36+
37+
int main()
38+
{
39+
short i = 32768;
40+
41+
std::cout<< i;
42+
43+
return 0;
44+
}
45+
```
46+
47+
当你运行上方代码的时候你会发现编译器并不会报错!
48+
49+
****: 欸? 难道可以存储吗?
50+
51+
**系统**: 当然不可以,你仔细看一看输出的内容吧。
52+
53+
**输出结果**: `-32768`
54+
55+
这是因为当你试图将一个超出范围的值存入一个变量时,就会发生溢出。
56+
57+
```{important}
58+
注意整数型的数据类型只能够用来存储整数,如果用来存储例如: `3.1415` 或 `a` 这种数据则同样会出现错误!!!
59+
```
60+
61+
### 浮点型
62+
63+
对于一些需要存储小数的场景下我们需要使用浮点数据类型来存储小数,浮点型有三位管理员分别是: `float``double``long double`
64+
65+
| 类型 | (通常)占用大小(字节) | 范围 |
66+
| ------------- | -------------------- | ---------------------------------------------------- |
67+
| `float` | 4 | 约 6-7 位十进制小数精度 |
68+
| `double` | 8 | 约 15-16 位十进制小数精度 |
69+
| `long double` | 8, 12, 或 16 | 提供比 `double` 更高的精度,具体大小和精度依赖于环境 |
70+
71+
```{admonition} 👨‍💻 代码演示
72+
73+
```CPP
74+
#include <iostream>
75+
76+
int main() {
77+
float myFloat = 3.14;
78+
double myDouble = 3.14159;
79+
long double myLongDouble = 3.1415926535;
80+
81+
std::cout << "单精度浮点数: " << myFloat << std::endl;
82+
std::cout << "双精度浮点数: " << myDouble << std::endl;
83+
std::cout << "长双精度浮点数: " << myLongDouble << std::endl;
84+
85+
return 0;
86+
}
87+
88+
```
89+
90+
```{important}
91+
浮点类型可以表⽰⾮常⼤或⾮常⼩的数,但它们只能近似地表⽰⼩数,因为它们在内存中的表⽰是基于⼆进制分数的。
92+
93+
浮点类型在计算机中的表示有时会导致出现精度问题,因此在需要进行精确计算的场景(如金融计算)中,应该考虑使用专门的库而不是浮点类型。
94+
```
95+
96+
### 字符型
97+
98+
字符型是一个用于存储各种文本字符的数据类型例如: `1234567890``abcdefghijklmnopqrstuvwxyz` 又或者是大写的 `ABCDEFGHIJKLMNOPQRSTUVWXYZ`,这些字符都可以使用此数据类型进行存储。
99+
100+
| 类型 | (通常)占用大小(字节) | 范围 |
101+
| --------- | -------------------- | ------------------------------------------------------ |
102+
| `char` | 1 | 用于存储单个ASCII字符,或 `-128``127` 范围的小整数 |
103+
| `wchar_t` | 2 或 4 | 宽字符类型,用于支持多语言字符集(如Unicode) |
104+
105+
`char` 数据类型通常只能用来存储一个字符 也就是 "1" / "A" 这种单个的字符,如果想要存储一句话这种长字符就需要用到**数组**来实现。
106+
107+
`wchar_t` 能够存储的不仅限于普通的文本,它还可以用来存储一些特殊的符号例如 `©` 符号。
108+
109+
110+
```{admonition} 👨‍💻 代码演示
111+
112+
```CPP
113+
#include <iostream>
114+
115+
int main() {
116+
char character = 'A';
117+
wchar_t wideChar = L'Ω';
118+
119+
std::cout << "字符: " << character << std::endl;
120+
std::cout << "字符的ASCII值: " << int(character) << std::endl;
121+
122+
return 0;
123+
}
124+
```
125+
126+
### 布尔型
127+
128+
布尔型也可以称之为逻辑型,这个数据类型只有一个类型名 `bool`,它只能存储 "`true`" / "`false`" 两个值。布尔型常用于需要进行逻辑判断的场景,例如校验是否正确 `true`(正确) 或 `false`(不正确)。
129+
130+
| 类型 | (通常)占用大小(字节) | 范围 |
131+
| ------ | -------------------- | ------------------------------- |
132+
| `bool` | 1 | 只能是 `true``false` 两个值 |
133+
134+
```{admonition} 👨‍💻 代码演示
135+
136+
```CPP
137+
#include <iostream>
138+
139+
int main() {
140+
bool isTrue = true;
141+
bool isFalse = false;
142+
143+
std::cout << "isTrue: " << isTrue << std::endl;
144+
std::cout << "isFalse: " << isFalse << std::endl;
145+
std::cout << "isTrue的实际值: " << (isTrue ? "true" : "false") << std::endl;
146+
147+
return 0;
148+
}
149+
```
150+
151+
### 空类型
152+
153+
空类型代表着没有类型,使用场景通常是表示函数没有返回值或者函数不需要接收参数。
154+
155+
| 类型 | (通常)占用大小(字节) | 范围 |
156+
| ------ | -------------------- | -------------------------------------------------- |
157+
| `void` | 不适用 | 表示“无类型”,常用于函数返回类型或泛型指针 `void*` |
158+
159+
```{admonition} 👨‍💻 代码演示
160+
161+
```CPP
162+
void demo(void){
163+
std::cout << "我不接收任何参数 也不返回任何值" << std::endl;
164+
}
165+
```

source/Language Core/Chapter-2/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
```{toctree}
66
:maxdepth: 6
7-
:caption: 基础语法:
87
98
Section-01
9+
Section-02
1010
```

source/Language Core/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# 语言核心
22

3+
本部分主要学习如下内容
4+
35
```{toctree}
46
:maxdepth: 6
5-
:caption: 语言核心:
67
78
Chapter-1/index
89
Chapter-2/index

source/conf.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,24 @@
3535

3636
# html_theme = 'alabaster'
3737
html_theme = "furo"
38+
html_title = "Modern C++ Full-Stack Tutorial"
3839
html_theme_options = {
39-
"announcement": "<em>公告</em> 本教程并不严谨,如有不足之处欢迎评论指正!",
40+
"announcement": "<strong>声明</strong> 本教程并不严谨,如有不足之处欢迎评论指正!",
41+
"source_repository": "https://github.com/OasisPioneer/Modern-CPP-Full-Stack-Tutorial",
42+
"source_branch": "main",
43+
"source_directory": "source/",
44+
"footer_icons": [
45+
{
46+
"name": "GitHub",
47+
"url": "https://github.com/OasisPioneer/Modern-CPP-Full-Stack-Tutorial",
48+
"html": """
49+
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 16 16">
50+
<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path>
51+
</svg>
52+
""",
53+
"class": "",
54+
},
55+
],
4056
}
4157
html_static_path = ['_static']
4258
html_css_files = [

source/index.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
# Modern C++ Full-Stack Tutorial documentation
1+
# Modern C++ Full-Stack Tutorial
2+
3+
```{include} ../README.md
4+
:start-after: <!-- start elevator-pitch -->
5+
:end-before: <!-- end elevator-pitch -->
6+
```
27

38
```{toctree}
49
:maxdepth: 6
5-
:caption: 目录:
610
711
Language Core/index
812
```

0 commit comments

Comments
 (0)