Skip to content

C++ 基础:变量与数据类型

前置学习:程序的标准结构输出

在编写复杂的程序时,我们需要让计算机在内存中临时记住各种数据(比如玩家的血量、当前的得分)。在编程语言中,用来在内存中保存数据的“带标签的储物盒”,就叫做变量 (Variable)

1. 认识最常用的变量:int

要想使用变量,必须先向电脑申请造一个“盒子”。我们在做题时最常打交道的就是专门用来装整数的盒子——int

cpp
// 语法:盒子类型 盒子名字 = 初始装的东西;
int hp = 100;

这短短的一行代码,包含了变量的三个核心要素:

  1. 类型 (int):规定了这个盒子只能装普通的整数(Integer)。
  2. 名字 (hp):这个盒子的专属标签,以后我们要找这 100 滴血,直接喊 hp 就行。
  3. 值 (100):盒子里实际装的具体数据。

2. 疑问:如果给 int 强行塞入别的东西会怎样?

既然 int 是专门用来装整数的,那如果我们“不听话”,非要把小数或者其他极端数据塞进去,会发生什么呢?

情况 A:塞入小数

cpp
int score = 3.14;
cout << score;

运行结果只会输出 3 因为 int 盒子极其死板,它装不下小数部分,会直接把 .14 无情地砍掉丢弃(注意:是直接截断,不是四舍五入)。

情况 B:塞入一个极其巨大的数字

cpp
int money = 3000000000; // 30 亿
cout << money;

运行结果会输出一个乱七八糟的负数(比如 -1294967296)。 因为普通的 int 盒子容量有限,极限只能装到大约 21 亿。强行塞入 30 亿会导致盒子被“撑爆”,在计算机里这叫数据溢出,是非常严重的程序错误。

为了解决这些问题,C++ 不仅仅只有 int,它还为不同形态的数据准备了不同类型的盒子。

3. 核心数据类型(竞赛必背)

在 GESP 考级和信奥赛中,除了 int,你还必须牢记以下 4 种核心变量类型:

类型声明专门用来装什么示例竞赛必考重点
int标准整数10, -5最常用,极限容量大约是 21亿
long long巨大整数10000000000极易错: 当题目数据范围超过 20 亿时,必须使用它,防止盒子撑爆(数据溢出)!
double小数(双精度)3.14159竞赛中涉及小数的运算,首选 double,不要用 float(精度不够容易错)。
char单个字符'A', '*'必须使用单引号包裹,里面只能放一个字符。
bool真 或 假true, false只有两个值:成立(true) 或 不成立(false),常用于状态标记。

4. 给变量起名字的 4 条死规矩

给盒子贴标签(命名)不能随心所欲,必须通过 C++ 编译器的严格审查:

  1. 只能由英文字母、数字和下划线 (_) 组成。
  2. 绝对不能以数字开头1a 会报错,a1 是合法的)。
  3. 不能用系统自带的专属词汇(比如不能给变量起名叫 intcout)。
  4. 严格区分大小写Scorescore 在内存里是两个毫不相干的盒子)。

5. 危险区:未初始化的“幽灵数据”

如果你只申请了盒子,却没有往里面放东西(没有赋初始值):

cpp
#include <iostream>
using namespace std;

int main() {
    int score; // 危险!申请了空间,但没有清空里面的旧数据
    cout << score << endl; 
    return 0;
}

这个时候输出 score结果并不是 0,而是内存里上个程序遗留下来的“垃圾乱码”(比如 -858993460)。 避坑铁律: 养成好习惯,每次声明变量时顺手赋一个初始值,例如 int score = 0;

6. 动手实践

md
1. 在网页左下角的在线沙盒中,声明一个 `int` 类型的变量 `a` 并赋值为 15。
2. 声明一个 `int` 类型的变量 `b` 并赋值为 4。
3. 利用 `cout`,打印出 `a / b` 的结果,看看 C++ 中的整数相除是怎么回事。
4. 把变量 `a``b` 的类型从 `int` 改为 `double`,再运行一次,对比结果有什么不同?
💻 运行代码

C++ 在线评测沙盒

📥 标准输入 (cin):
📤 终端输出 (cout):