目录
[1.1 什么是变量?](#1.1 什么是变量?)
[1.2 数据类型分类](#1.2 数据类型分类)
[2.1 整型(int, short, long)](#2.1 整型(int, short, long))
[2.1.1 常见整型类型](#2.1.1 常见整型类型)
[2.1.2 代码示例](#2.1.2 代码示例)
[2.1.3 注意事项](#2.1.3 注意事项)
[2.2 浮点型(float, double)](#2.2 浮点型(float, double))
[2.2.1 浮点型特点](#2.2.1 浮点型特点)
[2.2.2 代码示例](#2.2.2 代码示例)
[2.2.3 精度问题](#2.2.3 精度问题)
[2.3 字符型(char)](#2.3 字符型(char))
[2.3.1 字符型特性](#2.3.1 字符型特性)
[2.3.2 代码示例](#2.3.2 代码示例)
[2.3.3 常见转义字符](#2.3.3 常见转义字符)
[2.4 布尔型(bool)](#2.4 布尔型(bool))
[2.4.1 布尔型特点](#2.4.1 布尔型特点)
[2.4.2 代码示例](#2.4.2 代码示例)
[3.1 基本枚举定义](#3.1 基本枚举定义)
[3.2 C++11 强类型枚举](#3.2 C++11 强类型枚举)
[4.1 命名规则](#4.1 命名规则)
[4.2 命名风格](#4.2 命名风格)
[4.3 初始化建议](#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 代码示例
cpp
#include <iostream>
using namespace std;
int main() {
int age = 25; // 声明int变量
short temperature = -5; // 声明short变量
long population = 7800000000L; // long变量需加后缀L
cout << "Age: " << age << endl;
cout << "Temperature: " << temperature << endl;
cout << "Population: " << population << endl;
return 0;
}
输出:
cpp
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 代码示例
cpp
#include <iostream>
using namespace std;
int main() {
float pi = 3.14159f; // float变量需加后缀f
double gravity = 9.81; // double默认类型
double scientific = 6.022e23; // 科学计数法
cout << "Pi: " << pi << endl;
cout << "Gravity: " << gravity << endl;
cout << "Scientific: " << scientific << endl;
return 0;
}
输出:
cpp
Pi: 3.14159
Gravity: 9.81
Scientific: 6.022e+23
2.2.3 精度问题
cpp
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 代码示例
cpp
#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;
}
输出:
cpp
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 代码示例
cpp
#include <iostream>
using namespace std;
int main() {
bool is_raining = true;
bool has_error = 0; // 0 → false
if (is_raining) {
cout << "Bring an umbrella!" << endl;
}
if (!has_error) {
cout << "No error detected." << endl;
}
return 0;
}
输出:
cpp
Bring an umbrella!
No error detected.
三、枚举类型(enum)
3.1 基本枚举定义
cpp
#include <iostream>
using namespace std;
int main() {
enum Color { RED, GREEN, BLUE }; // 自动从0开始编号
Color my_color = GREEN;
cout << "RED = " << RED << endl; // 输出 0
cout << "GREEN = " << GREEN << endl; // 输出 1
cout << "BLUE = " << BLUE << endl; // 输出 2
return 0;
}
3.2 C++11 强类型枚举
cpp
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 初始化建议
cpp
// 推荐方式(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 }; |