C++ 变量与数据类型全解析:int、double、char、string、bool 详细指南
C++ 中的变量
在 C++ 中,变量是一个具名的存储位置,允许程序员存取和操作数据。每个变量都有明确的类型,决定了其内存占用、取值范围及可执行的操作。
本教程涵盖:
- C++ 变量基础
- 基本变量类型
- 声明规则
- 数据类型层级
- 标识符与命名规范
- const 限定符
- 作用域规则
- 隐式与显式类型转换
- register 变量
- 注释与转义序列
C++ 基本变量类型
int – 整数,无小数或指数部分(如 120、-90)。
double – 双精度浮点数(如 11.22、2.345)。
char – 单字符字面量,用单引号括起(如 'a'、'm'、'F'、'P'、'}')。
float – 单精度浮点数(如 1.3、2.6)。
string – 双引号括起的字符序列(如 "How are you?")。
bool – 仅能存储 true 或 false。
C++ 变量声明规则
- 名称可包含字母、数字、下划线。
- 不能以数字开头。
- 惯例:变量用小写,常量常用大写开头。
- 不可与语言关键字冲突(如
int)。 - 以下划线开头虽合法但不推荐(保留标识符规则)。
C++ 变量数据类型体系
C++ 提供丰富的基本类型。void 类型无值,常用作无返回值函数的返回类型。
算术类型分两大类:
- 浮点类型:
float(约 32 位)、double(约 64 位)、long double(约 96/128 位,视实现而定)。 - 整型:整数、字符和
bool。整型可分为有符号和无符号。
有符号类型可表示负数、零、正数。例如 8 位有符号 char 范围为 –127 到 127。
无符号类型仅存非负值。8 位无符号 char 范围为 0 到 255。

变量名与标识符
标识符可含字母、数字、下划线,长度无限制,区分大小写:
int guru99, gurU99, GuRu99, GURU99;
保留关键字不可作标识符。良好的命名约定能提升可读性:变量用小写,多词用 camelCase 或 snake_case,类名首字母大写。

声明与定义示例
int a = 5; int b; char c = 'A'; int a, b; a = b = 1000; int a(5); int b{5};
C++ 中的 const 限定符
当值初始化后不应改变时使用 const:
const int bufSize = 512; // 输入缓冲区大小
const 变量必须初始化,否则编译报错。
const int i = get_size(); // 运行时初始化,合法 const int j = 42; // 编译时初始化,合法 const int k; // 错误:未初始化的 const int i = 42; const int ci = i; // 合法:i 的副本
C++ 变量作用域
作用域决定名称的可见范围。变量从声明点起至所在块结束可见。
#include <iostream>
int main() {
int sum = 0;
for (int val = 1; val <= 10; ++val)
sum += val;
std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl;
return 0;
}
main具全局作用域。sum在main块作用域内。val仅在for循环局部作用域内。
嵌套作用域
#include <iostream>
using namespace std;
int reused = 42; // 全局作用域
int main() {
int unique = 0; // 块作用域
cout << reused << " " << unique << endl; // 42 0
int reused = 0; // 局部 reused 遮蔽全局
cout << reused << " " << unique << endl; // 0 0
cout << ::reused << " " << unique << endl; // 42 0
return 0;
}
变量类型转换
C++ 在特定条件下执行隐式转换,关键规则如下:
- 非 bool 转
bool:0 变false,非 0 变true。bool b = 42; // b 为 true
bool转算术类型:true变 1,false变 0。bool b = true; int i = b; // i 为 1
- 浮点转整数:向零截断。
int i = 3.14; // i 为 3
- 整数转浮点:小数部分丢失。
int i = 3; double pi = i; // pi 为 3.0
- 无符号溢出:模运算环绕。
unsigned char c = -1; // 8 位 char 下为 255
- 有符号溢出:未定义行为。
混合有符号和无符号整数时,负的有符号值可能意外转为巨大的无符号值。
register 变量
用 register 关键字建议编译器将频繁访问的变量置于 CPU 寄存器。现代编译器通常忽略此提示,自行优化。
register int i;
注释
注释被编译器忽略,用于文档化代码:
- 单行注释 – 以
//开头。 - 多行注释 – 由
/* ... */包裹。
/* This is a comment */ /* C++ comments can also span multiple lines */
转义序列
转义序列表示不可打印或特殊字符:
| 转义 | 说明 |
|---|---|
| \n | 换行 |
| \t | 水平制表 |
| \\ | 反斜杠 |
| \b | 退格 |
| \r | 回车 |
| \v | 垂直制表 |
| \f | 换页 |
| \a | 响铃 |
| \" | 双引号 |
| \' | 单引号 |
| \? | 问号 |
cout << '\n'; // 换行 cout << "\tguru99!\n"; // 制表 + 文本 + 换行
广义转义序列使用十六进制或八进制值:
\7 // 响铃 \12 // 换行 \40 // 空格 \x4D // 'M'
总结
- 变量提供具名存储且带类型。
- 主要类型:int、double、char、float、string、bool。
- 作用域决定可见性;嵌套作用域可遮蔽名称。
- 隐式与显式转换均存在,使用时需谨慎。
- register 提示可能提升性能但仅作建议。
- 注释与转义序列助于代码可读性与正确输出。
C语言
- 精通C#变量与基础数据类型:完整指南
- 掌握 C++ 变量、字面量与常量:核心概念与实战指南
- 深入理解 C++ 数据类型:基础类型、修饰符与最佳实践
- C 语言变量、常量与字面量完全指南
- C 语言数据类型详解:int、float、char 等核心类型完全指南
- C 语言用户自定义函数四大模式对比:参数与返回值的设计权衡
- C 语言存储类完全解析:auto、extern、static、register
- C++ 运算符全解析:类型、示例与示例程序
- C 语言变量详解:类型、命名规则、定义声明与内存管理
- C 语言可变参数详解:stdarg.h 实战指南
- C++变量类型详解:内存布局、取值范围与操作集
- 理解 Java 变量类型:综合指南