2.2 变量
正在加载视频播放器…
GESP C++ 一级:变量精讲
核心目标:理解变量的概念,掌握变量的声明、初始化、赋值、命名、类型、作用域,能正确使用变量完成输入、计算和输出。
变量是内存中一块有名字、有类型的存储空间,先声明后使用,类型决定能存什么,名字用来访问它。
一、变量是什么
变量可以理解为内存中的一个小盒子:
- 盒子有名字:变量名,如
a、sum。 - 盒子有类型:决定能放什么数据,如
int只能放整数。 - 盒子有值:当前里面存的数据。
- 盒子的值可以改变:所以叫“变量”。
示例:
int a = 10; // 声明一个整数变量 a,初始值为 10
a = 20; // 把 a 的值改成 20
cout << a; // 输出 20
变量三要素:
| 要素 | 说明 | 示例 |
|---|---|---|
| 类型 | 决定存储的数据种类 | int、double、char |
| 名字 | 用来访问变量 | a、sum、score |
| 值 | 变量当前存储的数据 | 10、3.14、'A' |
二、变量的声明
声明变量就是告诉计算机:我要一个什么类型、什么名字的变量。
基本格式:
类型 变量名;
示例:
int a; // 声明一个整数变量 a
double score; // 声明一个小数变量 score
char ch; // 声明一个字符变量 ch
bool flag; // 声明一个布尔变量 flag
一次声明多个同类型变量:
int a, b, c;
考试提示:变量必须先声明,后使用。没声明就直接写
a = 10;是错误。
三、变量的初始化与赋值
1. 初始化
声明变量的同时给它一个初始值:
int a = 10;
double pi = 3.14;
char ch = 'A';
bool flag = true;
也可以一次初始化多个:
int a = 1, b = 2, c = 3;
2. 赋值
先声明,后赋值:
int a;
a = 10;
也可以重新赋值:
int a = 10;
a = 20;
a = a + 5; // 先算右边 a+5=25,再赋给 a
cout << a; // 输出 25
3. 初始化和赋值的区别
| 项目 | 初始化 | 赋值 |
|---|---|---|
| 时机 | 声明时给值 | 声明后给值 |
| 示例 | int a = 10; |
int a; a = 10; |
| 特点 | 一步完成 | 可以多次修改 |
4. 未初始化的危险
int a;
cout << a; // 错误做法,a 的值不确定
局部变量未初始化时,里面是“随机值”,不能直接使用。
四、变量的命名规则
变量名必须遵守以下规则:
- 只能由字母、数字、下划线组成。
- 不能以数字开头。
- 不能是 C++ 关键字,如
int、if、for、return。 - 区分大小写:
a和A是两个不同变量。 - 同一作用域内不能重复定义同名变量。
- 建议见名知义:
sum、score、maxn。
正确示例:
int a;
int _b;
int sum1;
int student_score;
错误示例:
int 1a; // 错误:数字开头
int a-b; // 错误:有减号
int int; // 错误:关键字
int a, a; // 错误:同一作用域重复定义
五、常用数据类型与变量
一级常用类型:
| 类型 | 含义 | 示例 | 说明 |
|---|---|---|---|
int |
整数 | int a = 10; |
约 (-2.1\times10^9) 到 (2.1\times10^9) |
long long |
长整数 | long long x = 10000000000; |
存更大的整数 |
float |
单精度小数 | float x = 1.5; |
精度较低 |
double |
双精度小数 | double x = 3.14; |
一级首选小数类型 |
char |
字符 | char c = 'A'; |
存一个字符 |
bool |
布尔 | bool f = true; |
true 或 false |
选择建议:
- 存整数:一般用
int。 - 数很大:用
long long。 - 存小数:用
double。 - 存单个字符:用
char。 - 存真假:用
bool。
六、变量的作用域
作用域就是变量能使用的范围。
1. 局部变量
在 main 函数或 {} 内定义的变量,只在所在块内有效。
int main() {
int a = 10;
{
int b = 20;
cout << a << " " << b << endl; // 正确
}
// cout << b; // 错误,b 已经离开作用域
return 0;
}
2. 循环变量作用域
for (int i = 1; i <= 5; i++) {
cout << i << " ";
}
// cout << i; // 错误,i 只在循环内有效
3. 全局变量(了解)
在 main 外面定义的变量,整个程序都能用:
int g = 100;
int main() {
cout << g;
return 0;
}
一级重点掌握局部变量,全局变量了解即可。
七、常量 const
常量是值不能改变的变量。
const int MAXN = 100;
const double PI = 3.14159;
特点:
- 必须在定义时初始化。
- 之后不能修改。
const int MAXN = 100;
// MAXN = 200; // 错误,常量不能重新赋值
常量和变量的区别:
| 项目 | 变量 | 常量 |
|---|---|---|
| 值能否改变 | 能 | 不能 |
| 关键字 | 无 | const |
| 示例 | int a = 10; |
const int MAXN = 100; |
八、变量的输入与输出
1. 输入到变量
int a;
cin >> a;
2. 输出变量
cout << a << endl;
3. 输入多个变量
int a, b;
cin >> a >> b;
cout << a + b << endl;
4. 字符变量输入
char c;
cin >> c;
注意:cin >> c 会跳过空格和换行。
九、变量交换
交换两个变量的值,需要借助临时变量:
int a = 3, b = 5;
int t = a;
a = b;
b = t;
cout << a << " " << b << endl; // 5 3
口诀:
临时变量存一个,另一个搬过去,临时变量再搬回。
十、类型转换与溢出
1. 隐式转换
int a = 3.9; // a 得到 3,小数部分被截断
double b = a; // b 得到 3.0
2. 显式转换
int a = 5, b = 2;
double c = (double)a / b; // 2.5
如果不转换:
cout << 5 / 2; // 输出 2
3. 整数溢出
int a = 100000;
int b = 100000;
int c = a * b; // 可能溢出
long long d = 1LL * a * b; // 正确
大数运算时,注意用
long long,乘法可先写1LL *。
十一、常见错误
-
变量未声明就使用。
a = 10; // 错误,a 未定义 -
变量未初始化就输出。
int a; cout << a; // 结果不确定 -
命名不合规。
int 1a; // 错误 int a-b; // 错误 -
使用关键字做变量名。
int for; // 错误 -
同一作用域重复定义。
int a; int a; // 错误 -
赋值和比较混淆。
if (a = 1) // 这是赋值,不是比较 if (a == 1) // 正确 -
类型不匹配。
int a = "hello"; // 错误 -
整数除法丢小数。
cout << 5 / 2; // 2 cout << 5.0 / 2; // 2.5 -
变量作用域外使用。
{ int b = 10; } cout << b; // 错误 -
忘记初始化累加变量。
int sum; // 错误,sum 值不确定 int sum = 0; // 正确
十二、阅读程序写结果
题目 1
int a = 5;
a = a + 3;
cout << a << endl;
输出:
8
题目 2
int a = 3, b = 4;
int t = a;
a = b;
b = t;
cout << a << " " << b << endl;
输出:
4 3
题目 3
int a = 10;
int b = a;
a = 20;
cout << a << " " << b << endl;
输出:
20 10
题目 4
double x = 5 / 2;
cout << x << endl;
输出:
2
因为 5 / 2 是整数除法,结果是 2,再赋给 double 变成 2.0,输出 2。
题目 5
const int MAXN = 10;
int a = MAXN + 5;
cout << a << endl;
输出:
15
十三、速查表
| 需求 | 写法 |
|---|---|
| 声明整数变量 | int a; |
| 声明并初始化 | int a = 10; |
| 一次声明多个 | int a, b, c; |
| 赋值 | a = 20; |
| 输入变量 | cin >> a; |
| 输出变量 | cout << a; |
| 交换两个变量 | int t = a; a = b; b = t; |
| 定义常量 | const int MAXN = 100; |
| 长整数 | long long x; |
| 小数 | double x; |
| 字符 | char c; |
| 布尔 | bool flag; |
| 强制转换 | (double)a / b |
十四、总结
变量是 GESP 一级最基础、最重要的内容。
- 变量是内存中有名字、有类型的存储空间。
- 变量必须先声明,再使用。
- 变量可以初始化,也可以多次赋值。
- 变量命名要合规,区分大小写,不能是关键字。
- 使用变量时注意类型、作用域、初始化、溢出和整数除法。
复习建议:多练“声明变量 → 输入 → 计算 → 输出”的完整程序,注意变量名、类型、初始化和作用域。考试中遇到变量题,先看类型,再看是否初始化,最后看赋值和运算顺序。