C++学习(2)– 类型
今天聊一聊C++中的数据类型。
在前面的文章中,我们多次见到了这一行代码:
int a,b; // 声明变量a,b
今天主要就聊这一句代码。在使用一个变量的时候,要先声明它,声明它的时候就要指定它的数据类型。
在聊这个之前,先了解下程序在计算机中是怎么运行的,大致流程如下:
- 编译:代码通常需要先经过编译,将其转换成计算机可以理解的形式。
- 加载:将转换后的代码加载到计算机的内存中。
- 执行:处理器根据代码中的指令逐步执行。
- 指令执行:包括数据操作、控制流(如条件判断和循环)等。
- 访问数据:通过内存访问代码中使用的数据。
- 硬件交互:与其他硬件组件进行交互,如输入输出设备。
- 内存管理:管理内存的分配和释放。
- 异常处理:处理可能出现的错误和异常情况。
其核心是处理器根据代码中的指令,对数据进行处理和操作,实现各种功能。这个过程需要编译器、操作系统、硬件等多个组件的协同工作。
再以我们之前写的计算加法的程序为例。
- 程序写好后,在运行之前,要编译成计算机可以识别的指令( 关于这块,后面专门说),这个编译后的产物计算机才会认识它。
- 执行代码的过程就是将代码加载到了电脑内存中(所有的程序都可以认为是这样,所以,电脑的内存大了,可以同时运行的程序就多了)。程序在内存中运行的过程就是在跑我们的程序,比如等待我们输入两个数字,程序就会执行我们写的加法指令,将两数相加的结果计算出来。
- 在执行的过程中,程序要等待我们的输入数据,也要将计算的最终结果在内存中临时存储。这些都是在操作数据,但是电脑不太聪明,需要我们告诉它这个数据是什么格式的。(1计算机是个很笨,很单纯的小伙子,作为程序的编写者,需要很明确地告诉它我们需要在什么时候让它操作什么数据做什么事情,否则它就撂挑子不干了)
- 程序和硬件的交互我们暂时不关心,也有可能一直不关心。
- 内存的分配和异常的处理,在学习C++的过程中,我们务必要注意。(为什么C++和Java比较起来,很多人都说Java学起来简单,很重要的一点就是因为Java的内存管理是JVM自己管理的,而C++需要我们开发人员去手动管理)
C++常见的数据类型包括:
- 整型:如 int、short、long 等。
- 浮点型:如 float、double 等。
- 字符型:char。
- 布尔型:bool。
- 数组:可以存储相同类型的多个元素。
- 指针:用于指向其他变量或内存地址。
- 引用:是变量的别名。
- 结构体:可组合不同类型的成员。
- 类:具有封装、继承和多态特性。
这些数据类型我们在比赛中一般不会用到结构体和类,但是其他的还是要在平时的程序编写过程中不断熟悉。
简单介绍一下上面说的数据类型:
整型和浮点型,大致对应的就是我们平时说的整数和小数;
字符型比较特殊、一般用来表示单个字符,放在单引号中,比如’a’,’A’等。
布尔型用来表示True和False,也就是真和假。
数组可以放同类型的一系列数据,比如放一组学生的成绩、一组字符串或者一组图形数据等。它的大小是创建时候就固定的,不能动态调整,但是也就是因为这样,所以数组的存取性能都很好。
结构体和类都可以认为是面向对象中的一种对对象的抽象,目前暂不涉及,不赘述。
最后,可以试着运行下面的程序,运行过程中可以试着改一改,看看是不是和你想的一样:
#include <iostream>
using namespace std;
int main() {
int integer = 42;
float floatingPoint = 3.14f;
char character = 'A';
bool boolean = true;
string seasons[] = {"spring","summer","autumn","winter"};
string stringValue = "Hello, World!";
cout << "整数: " << integer << endl;
cout << "浮点数: " << floatingPoint << endl;
cout << "字符: " << character << endl;
cout << "布尔值: " << boolean << endl;
cout << "字符串: " << stringValue << endl;
cout << "数组:" << seasons[1] << "," << seasons[2] << endl;
return 0;
}
运行结果:
- 这句话特别重要,在学习写程序的过程中,需要随时记得这句话。