C++ 变量类型¶
变量 本质上是程序可操作的一块 内存存储区域的名称 。 在程序运行过程中,变量用于保存数据,其值可以在程序执行期间发生变化。
在 C++ 中,每个变量都有一个 确定的数据类型 。 数据类型决定了:
- 变量在内存中占用的空间大小;
- 变量的内存布局;
- 该变量可以存储的数据范围;
- 可以对变量执行的操作。
一、变量命名规则¶
变量名(标识符)由以下字符组成:
- 字母(A–Z、a–z)
- 数字(0–9)
- 下划线(
_)
命名规则如下:
- 必须以 字母或下划线 开头;
- 不能以数字开头;
- C++ 区分大小写 ,例如
count和Count是不同的变量名。
二、基本变量类型¶
基于前一章介绍的基本数据类型,C++ 中常用的变量类型包括:
| 类型 | 描述 |
|---|---|
bool |
布尔类型,只能取 true 或 false,通常占用 1 字节 |
char |
字符类型,用于存储 ASCII 字符,通常占用 1 字节 |
int |
整数类型,通常占用 4 字节 |
float |
单精度浮点数,1 位符号位、8 位指数、23 位尾数,通常占用 4 字节 |
double |
双精度浮点数,1 位符号位、11 位指数、52 位尾数,通常占用 8 字节 |
void |
表示“无类型”,通常用于函数返回值 |
wchar_t |
宽字符类型,用于表示更大范围的字符,占用 2 或 4 字节 |
三、常见变量类型分类¶
整数类型(Integer Types)¶
int:普通整数,通常 4 字节short:短整数,通常 2 字节long:长整数,通常 4 或 8 字节long long:更长整数,通常 8 字节
浮点类型(Floating-Point Types)¶
float:单精度浮点数double:双精度浮点数long double:扩展精度浮点数(大小依实现而定)
字符类型(Character Types)¶
char:普通字符wchar_t:宽字符char16_t:16 位 Unicode 字符(C++11)char32_t:32 位 Unicode 字符(C++11)
布尔类型(Boolean Type)¶
bool:只能取true或false
枚举类型(Enumeration Types)¶
enum:一组命名的整型常量
指针类型(Pointer Types)¶
type*:存储某种类型对象的内存地址
数组类型(Array Types)¶
type[]或type[size]:同一类型元素的集合
结构体、类与联合体¶
struct:结构体类型class:类类型union:共用体类型
四、关于类型大小的说明¶
在 C++ 中, 类型占用的字节数取决于编译器和计算机架构 。 C++ 标准并不规定具体大小,而是规定 最小取值范围 ,以保证代码的可移植性。
例如:
- 在大多数 64 位系统中:
int通常为 4 字节long通常为 8 字节- 但在某些平台上,
long仍可能是 4 字节
五、变量定义(Definition)¶
变量定义 用于告诉编译器:
- 在哪里分配存储空间;
- 使用什么类型;
- 是否需要初始化。
变量定义的一般形式为:
示例:
变量初始化¶
变量可以在定义时进行初始化:
示例:
⚠️ 注意:
- 具有 静态存储期 的变量会被自动初始化为 0
- 局部变量如果未初始化,其值是**未定义的**
六、变量声明(Declaration)¶
变量声明 向编译器说明变量的名称和类型,但 不分配存储空间 。
变量声明常用于 多文件程序 中,通常使用 extern 关键字。
一个变量可以被声明多次,但只能被定义一次。
示例:声明与定义分离¶
#include <iostream>
using namespace std;
// 变量声明
extern int a, b;
extern int c;
extern float f;
int main()
{
// 变量定义
int a, b;
int c;
float f;
a = 10;
b = 20;
c = a + b;
cout << c << endl;
f = 70.0 / 3.0;
cout << f << endl;
return 0;
}
输出结果:
七、函数的声明与定义¶
函数同样可以先声明,后定义:
八、左值(Lvalue)与右值(Rvalue)¶
左值(lvalue)¶
- 表示 具有内存地址 的表达式
- 可以出现在赋值运算符左侧或右侧
右值(rvalue)¶
- 表示 临时值或字面量
- 只能出现在赋值运算符右侧
下面的语句是 非法的:
九、小结¶
- 变量是内存空间的抽象名称
- 类型决定变量的大小、范围和操作方式
- 区分“定义”和“声明”对多文件程序非常重要
- 理解左值与右值是掌握 C++ 表达式的基础