C++ 第一阶段 基本语法 - 第一节:变量与数据类型详解
目录
一、变量与数据类型概述
1.1 什么是变量?
1.2 数据类型分类
二、基本数据类型详解
2.1 整型(int, short, long)
2.1.1 常见整型类型
2.1.2 代码示例
2.1.3 注意事项
2.2 浮点型(float, double)
2.2.1 浮点型特点
2.2.2 代码示例
2.2.3 精度问题
2.3 字符型(char)
2.3.1 字符型特性
2.3.2 代码示例
2.3.3 常见转义字符
2.4 布尔型(bool)
2.4.1 布尔型特点
2.4.2 代码示例
三、枚举类型(enum)
3.1 基本枚举定义
3.2 C++11 强类型枚举
四、变量命名规则与最佳实践
4.1 命名规则
4.2 命名风格
4.3 初始化建议
五、总结
一、变量与数据类型概述
1.1 什么是变量?
变量是程序中用于存储数据的容器,每个变量需要指定一个数据类型,以决定:
- 存储空间大小(内存占用)
- 数据的取值范围
- 可执行的操作类型
1.2 数据类型分类
C++ 是静态类型语言,变量类型在声明时确定。基础数据类型包括:
- 整型(int, short, long)
- 浮点型(float, double)
- 字符型(char)
- 布尔型(bool)
- 枚举型(enum)
二、基本数据类型详解
2.1 整型(int, short, long)
2.1.1 常见整型类型
类型 | 占用字节 | 范围(32位系统) |
---|---|---|
short | 2 | -32768 ~ 32767 |
int | 4 | -2147483648 ~ 2147483647 |
long | 4 | 同 int |
long long | 8 | ±9.2e18 |
2.1.2 代码示例
#include <iostream>
using namespace std;int main() {int age = 25; // 声明int变量short temperature = -5; // 声明short变量long population = 7800000000L; // long变量需加后缀Lcout << "Age: " << age << endl;cout << "Temperature: " << temperature << endl;cout << "Population: " << population << endl;return 0;
}
输出:
Age: 25
Temperature: -5
Population: 7800000000
2.1.3 注意事项
- 32位系统下
int
通常为 4 字节,64位系统可能不同 - 使用
LLONG_MAX
等常量查看最大值(需包含<climits>
头文件)
2.2 浮点型(float, double)
2.2.1 浮点型特点
类型 | 占用字节 | 精度 | 表示范围 |
---|---|---|---|
float | 4 | 6-7 位有效数字 | 3.4e-38 ~ 3.4e+38 |
double | 8 | 15-16 位有效数字 | 1.7e-308 ~ 1.7e+308 |
2.2.2 代码示例
#include <iostream>
using namespace std;int main() {float pi = 3.14159f; // float变量需加后缀fdouble gravity = 9.81; // double默认类型double scientific = 6.022e23; // 科学计数法cout << "Pi: " << pi << endl;cout << "Gravity: " << gravity << endl;cout << "Scientific: " << scientific << endl;return 0;
}
输出:
Pi: 3.14159
Gravity: 9.81
Scientific: 6.022e+23
2.2.3 精度问题
float a = 0.1f;
float b = 0.2f;
if (a + b == 0.3f) { // 实际不会成立!cout << "Equal";
} else {cout << "Not equal"; // 输出此行
}
原因:浮点数在计算机中是以二进制存储的,某些十进制小数无法精确表示。
2.3 字符型(char)
2.3.1 字符型特性
- 占用 1 字节(8 bit)
- 实际存储的是 ASCII 码值(0~127)
- 可直接操作字符或其对应的整数值
2.3.2 代码示例
#include <iostream>
using namespace std;int main() {char grade = 'A'; // 字符常量char newline = '\n'; // 转义字符char ascii_value = 65; // 直接使用ASCII码cout << "Grade: " << grade << endl;cout << "ASCII 65: " << ascii_value << endl;cout << "Newline: " << newline << "END" << endl;return 0;
}
输出:
Grade: A
ASCII 65: A
Newline:
END
2.3.3 常见转义字符
转义字符 | 含义 |
---|---|
\n | 换行 |
\t | 制表符 |
\\ | 反斜杠 |
\" | 双引号 |
\' | 单引号 |
2.4 布尔型(bool)
2.4.1 布尔型特点
- 占用 1 字节
- 取值仅能是
true
或false
- 在条件判断中自动转换:
- 非零值 →
true
- 零值 →
false
- 非零值 →
2.4.2 代码示例
#include <iostream>
using namespace std;int main() {bool is_raining = true;bool has_error = 0; // 0 → falseif (is_raining) {cout << "Bring an umbrella!" << endl;}if (!has_error) {cout << "No error detected." << endl;}return 0;
}
输出:
Bring an umbrella!
No error detected.
三、枚举类型(enum)
3.1 基本枚举定义
#include <iostream>
using namespace std;int main() {enum Color { RED, GREEN, BLUE }; // 自动从0开始编号Color my_color = GREEN;cout << "RED = " << RED << endl; // 输出 0cout << "GREEN = " << GREEN << endl; // 输出 1cout << "BLUE = " << BLUE << endl; // 输出 2return 0;
}
3.2 C++11 强类型枚举
enum class Direction { UP, DOWN, LEFT, RIGHT }; // 不会隐式转换为int
Direction dir = Direction::UP;// 错误:不能直接比较int和Direction
// if (dir == 0) { ... }// 正确方式:
if (dir == Direction::UP) {cout << "Going up!" << endl;
}
四、变量命名规则与最佳实践
4.1 命名规则
- 只能使用字母、数字和下划线(
_
) - 不能以数字开头
- 区分大小写(
age
≠Age
) - 不可使用C++关键字(如
int
,class
)
4.2 命名风格
风格 | 示例 | 适用场景 |
---|---|---|
驼峰命名法 | myVariable | 变量名 |
蛇形命名法 | my_variable | 常量/宏定义 |
全大写 | MAX_VALUE | 全局常量 |
4.3 初始化建议
// 推荐方式(C++11统一初始化)
int x{5}; // 值初始化
int y{}; // 零初始化
int z{10.5}; // 编译错误(防止隐式窄化)// 不推荐方式
int a = 5; // C风格初始化
int b = {5}; // C++11列表初始化
五、总结
数据类型 | 用途 | 示例 |
---|---|---|
int | 存储整数 | int count = 100; |
float/double | 存储小数 | double price = 9.99; |
char | 存储单个字符 | char letter = 'Z'; |
bool | 存储逻辑值 | bool flag = true; |
enum | 定义命名的整数常量集合 | enum Status { OK, ERROR }; |