第3章 数据类型、变量与常量
程序处理的每一个数据都必须先"声明类型"。本章讲解 C++ 一级要求的基本数据类型、变量的定义与命名规则、常量的两种写法,以及字符背后的 ASCII 码。
3.1 变量是什么
变量是内存中一块用来存放数据的小空间,有一个名字(变量名)和一个类型。
数据必须"先定义,后使用"。定义变量时,计算机按类型分配固定大小的内存。例如 int a; 会分配 4 个字节给 a。
3.1.1 变量的定义与初始化
int age; // 只定义,值未知(垃圾值)
int num = 10; // 定义并初始化为 10
double pi = 3.14; // 浮点变量
char ch = 'A'; // 字符变量,用单引号
int a, b, c; // 一行定义多个同类型变量
int x = 5, y = 7; // 同时初始化
养成"定义即初始化"的习惯,可以避免使用到不确定的垃圾值。
3.2 变量命名规则
- 只能由 字母、数字、下划线
_组成; - 首字符必须是字母或下划线,不能是数字;
- 区分大小写:
num与Num是两个不同的变量; - 不能使用关键字(如
int、if、for、while等); - 建议"见名知意",如
score、studentCount。
✅ 合法:name、_count、student1、maxValue
❌ 非法:123abc(数字开头)、int(关键字)、a+b(含非法字符)
int total_score = 0; // 推荐:下划线命名
int studentCount = 5; // 也常见:驼峰命名
3.3 基本数据类型
| 类型 | 名称 | 字节数 | 典型取值范围 |
|---|---|---|---|
short (int) | 短整型 | 2 | |
int | 整型 | 4 | (约 亿) |
long long | 长整型 | 8 | (约 ) |
float | 单精度浮点 | 4 | 约 6~7 位有效数字 |
double | 双精度浮点 | 8 | 约 15~17 位有效数字 |
char | 字符型 | 1 | (或 ) |
bool | 布尔型 | 1 | true(1) / false(0) |
整数溢出:int 最大约 21 亿,如果题目数据可能超过它(如 相加),应使用 long long。这是考试和竞赛中最常见的错误之一。
3.3.1 整型 int 与 long long
int a = 1000000000; // 10 亿,int 放得下
long long big = 5000000000LL; // 50 亿,必须用 long long
数字后加
LL表示long long类型的字面量;加L表示long。
3.3.2 浮点型 float 与 double
float f = 3.14f; // 单精度,数字后加 f
double d = 3.14159; // 双精度(默认推荐)
浮点数有精度误差,例如 0.1 + 0.2 在电脑里并不严格等于 0.3。判断两个浮点数是否相等要用误差范围,而不是直接 ==(更严谨的比较在更高阶学习)。一级阶段知道"浮点有误差"即可。
3.3.3 字符型 char 与 ASCII 码
char 占 1 字节,表面上存字符,本质存的是该字符对应的 ASCII 码(整数)。
| 字符 | ASCII |
|---|---|
'0'~'9' | 48~57 |
'A'~'Z' | 65~90 |
'a'~'z' | 97~122 |
char c = 'A';
cout << c << " 的 ASCII 是 " << (int)c << endl; // 输出 A 的 ASCII 是 65
cout << (char)97 << endl; // 输出 a
// 大小写转换:小写字母 - 32 = 对应大写
char lower = 'b';
char upper = lower - 32; // 'b'(98) - 32 = 66 = 'B'
cout << upper << endl; // 输出 B
记忆口诀:'a' - 'A' = 32;数字字符转数字用 '7' - '0' = 7。这在"数位分离"等题目中非常有用。
3.3.4 布尔型 bool
只有 true(真,值为 1)和 false(假,值为 0)。
bool isPass = true;
bool isOver = (3 > 5); // 关系表达式结果为 false
cout << isPass << " " << isOver << endl; // 输出 1 0
3.4 查看类型大小:sizeof
sizeof(类型或变量) 返回占用的字节数。
cout << sizeof(int) << endl; // 通常输出 4
cout << sizeof(double) << endl; // 通常输出 8
cout << sizeof(char) << endl; // 输出 1
3.5 常量
常量是在程序运行期间值不可改变的量。 两种写法:
3.5.1 const 定义(推荐,C++ 风格)
const int MAXN = 100; // 定义常量 MAXN
const double PI = 3.14159;
// MAXN = 200; // 错误!常量不能重新赋值
3.5.2 #define 宏定义(C 风格,预处理替换)
#define MAXN 100
#define PI 3.14159
const 和 #define 区别:前者有类型、会做类型检查,作用域受限制;后者只是"文本替换",发生在编译前的预处理阶段,没有类型概念。一级阶段推荐用 const,更安全。
3.6 随堂检测
1. 下列合法的变量名是( )。
- A.
2num - B.
int - C.
_score - D.
a-b
查看答案
答案:C。A 数字开头;B 是关键字;D 含减号;C 以下划线开头合法。
2. 字符 '9' 减去字符 '0' 的结果是( )。
- A. 9
- B.
'9' - C. 错误
- D. 0
查看答案
答案:A。'9' 的 ASCII 是 57,'0' 是 48,,得到整数 9。
3. 若要存储约 的整数,应优先选用( )。
- A.
int - B.
short - C.
long long - D.
char
查看答案
答案:C。int 约到 21 亿会溢出, 需用 long long。