C++变量类型详解:内存布局、取值范围与操作集
变量提供具名存储,程序可操控其值。每个变量拥有特定类型,决定三要素:
- 内存大小与布局
- 可存储值的范围
- 可施加的操作集合
变量名由字母、数字、下划线组成,首字符须为字母或下划线。大小写敏感(C++区分大小写)。
七大基础类型
| 序号 | 类型与说明 |
|---|---|
| 1 | bool 仅存 |
| 2 | char 通常占1字节(8位)。本质是整数类型。 |
| 3 | int 机器最自然的整数尺寸(通常4字节)。 |
| 4 | float 单精度浮点数。 |
| 5 | double 双精度浮点数。 |
| 6 | void 表示“无类型”,常用于函数无返回值。 |
| 7 | wchar_t 宽字符类型,用于多字节字符集。 |
C++还支持枚举、指针、数组、引用、数据结构、类等派生/用户定义类型,后续章节展开。
变量定义
告诉编译器在何处、分配多少存储。语法:
type variable_list;
type为合法C++类型(含用户定义类),variable_list为一个或多个标识符(逗号分隔)。合法示例:
int i, j, k;
char c, ch;
float f, salary;
double d;
int i, j, k;同时声明并定义三个int变量。
初始化
定义时赋初值:
type variable_name = value;
示例:
extern int d = 3, f = 5; // 声明d、f并初始化
int d = 3, f = 5; // 定义并初始化d、f
byte z = 22; // 定义并初始化z(byte非标准类型,通常为unsigned char)
char x = 'x'; // x的值为字符'x'
未显式初始化时:静态存储期变量隐式初始化为NULL(全0);其余变量初值未定义(垃圾值)。
变量声明
向编译器承诺“存在该类型、该名字的变量”,使编译期通过;链接期需真实定义。跨文件共享变量时使用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;
}
输出:30 和 23.3333。
同理适用于函数:先声明int func();,后在任意处定义int func() { return 0; }。
左值与右值
左值:指向内存位置的表达式。可出现在赋值号左侧或右侧。变量是左值。
右值:存储在内存某地址的数据值。不可赋值,只能出现在赋值号右侧。数字字面量是右值。
合法:int g = 20;(g是左值)
非法:10 = 20;(10是右值,编译报错)
C语言
- 掌握 C++ 运算符:六大类型全解析与实战示例
- C++ 变量与数据类型全解析:int、double、char、string、bool 详细指南
- C++ 运算符全解析:类型、示例与示例程序
- C++ 指针精通:核心概念、代码示例与实战应用
- C++ char 类型完全指南:声明、ASCII 码、输入输出与字符串转换
- C 语言指针完全指南:类型、用法与最佳实践
- C 语言变量详解:类型、命名规则、定义声明与内存管理
- C++变量类型详解:内存布局、取值范围与操作集
- C++变量作用域全解析:局部变量与全局变量的区别与交互
- C++数据类型修饰符详解:signed/unsigned/long/short实战指南
- Java 基本数据类型:8 大类型完整指南与示例
- 理解 Java 变量类型:综合指南