目录
引言
一、C++数据类型体系
1.1 基本数据类型
1.2 非基本数据类型
二、常量与变量
2.1 常量
2.2 变量
2.2.1 变量定义规则
2.2.3 变量赋初值
三、整型数据
3.1 整型常量的表示形式
3.2 整型变量分类
3.2.1 关键特性
四、浮点型数据
4.1 浮点型常量表示
4.2 浮点型变量特性
五、字符型数据
5.1 字符常量
5.2 字符变量与字符串常量
六、运算符与表达式
6.1 算术运算符
6.2 强制类型转换
6.3 自增自减运算符
6.4 逗号运算符
6.5 混合运算类型转换
七、总结
引言
C++作为一门静态类型语言,数据类型、运算符与表达式是构建程序的基础框架。掌握数据的描述规则(数据类型)和操作规则(运算符与表达式),是写出高效、无错代码的前提。本文基于C++第二章核心知识点,系统梳理数据类型分类、常量与变量定义、各类数据特性及运算符使用技巧,结合实例代码助你快速入门。
一、C++数据类型体系
C++的数据类型分为基本数据类型和非基本数据类型,构成了程序中数据存储的基础模型:
1.1 基本数据类型
核心用于存储简单数据,包括:
整型:
int(基本整型)、short(短整型)、long(长整型)字符型:
char(普通字符型)、unsigned char(无符号字符型)实型(浮点型):
float(单精度)、double(双精度)、long double(长双精度)布尔型:
bool(取值true/false)无值型:
void(多用于函数返回值)
1.2 非基本数据类型
由基本类型组合或扩展而来,包括:
数组:
type[](如int arr[5])指针:
type*(如char* p)引用:
type&(如int& ref = a)类与结构体:
class、struct联合:
union枚举:
enum
二、常量与变量
2.1 常量
程序运行中值不可改变的量,分为两类:
字面常量:直接书写的常量值,如整型
100、实型3.14、字符型'a'、字符串"hello"符号常量:用标识符替代常量,通过
#define定义,格式:#define 标识符 常量示例代码:符号常量的使用
#include <iostream> using namespace std; #define PRICE 30 // 定义符号常量PRICE代表30 int main() { int num = 10, total; total = num * PRICE; // 等价于10*30 cout << "total=" << total << endl; // 运行结果:total=300 // PRICE=40; 错误:符号常量不能赋值修改 return 0; }
2.2 变量
程序运行中值可改变的量,本质是内存中的存储单元,通过标识符(变量名)访问。
2.2.1 变量定义规则
格式:
类型符 标识符(如int a; char c; float x;)命名规范:仅由字母、数字、下划线组成,首字符必须是字母或下划线(如
sum、_total、student_name合法;M.D.John、3D64非法)注意事项:区分大小写(
A和a是不同变量),建议“见名知意”,需先定义后使用
2.2.3 变量赋初值
支持定义时直接初始化,示例:
int a = 3; // 整型变量a初值3 float f = 3.56; // 浮点型变量f初值3.56 char c = 'a'; // 字符变量c初值'a' int x, y, z = 5; // 仅z初始化,x、y未初始化 int m = 3, n = 3; // m、n初值均为3(不可写int m=n=3;)
三、整型数据
3.1 整型常量的表示形式
十进制:直接书写(如
123、-456)八进制:以
0开头(如0123等价于十进制83)十六进制:以
0x开头(如0x123等价于十进制291)
3.2 整型变量分类
按符号和长度分为6类(Visual C++ 6.0环境):
类型
字节数
数值范围
[signed] int
4
-2147483648~2147483647
unsigned int
4
0~4294967295
[signed] short [int]
2
-32768~32767
unsigned short [int]
2
0~65535
[signed] long [int]
4
-2147483648~2147483647
unsigned long [int]
4
0~4294967295
3.2.1 关键特性
内存中以补码存储,有符号变量最高位为符号位(0正1负)
可能发生溢出:超出范围时数值循环(如短整型
32767+1=-32768)示例代码:整型溢出
#include <iostream> using namespace std; int main() { short a = 32767; // 短整型最大值 short b = a + 1; // 溢出 cout << a << "," << b << endl; // 运行结果:32767,-32768 return 0; }
四、浮点型数据
用于存储小数或大范围整数,分为单精度(float)、双精度(double)、长双精度(long double)。
4.1 浮点型常量表示
小数形式:如
0.123、3.14指数形式:如
3e-3(等价于0.003),要求e前后必须有数字,指数为整数规范化指数形式:
e前的小数部分需保留1位非零数字(如1.23456e2)
4.2 浮点型变量特性
float:4字节,7位有效数字,范围3.4e-38~3.4e+38
double:8字节,15~16位有效数字,范围1.7e-308~1.7e+308(默认浮点型常量为double)存在舍入误差:超出有效数字的部分会被舍弃
示例代码:浮点型舍入误差
#include <iostream> using namespace std; int main() { float a = 123456.789e5; float b = a + 20; cout << "a=" << a << ", b=" << b << endl; // 运行结果:a=12345678848.000000, b=12345678868.000000 return 0; }
五、字符型数据
5.1 字符常量
普通字符:单引号包裹(如
'a'、'*')转义字符:以
\开头,表示特殊功能(如\n换行、\t制表位、\101八进制ASCII码对应'A')示例代码:转义字符使用
#include <iostream> using namespace std; int main() { cout << " ab c\t de\rf\tg\n"; // \t制表位、\r回车、\n换行 cout << "h\ti\b\bj k"; // \b退格 return 0; } // 运行结果: // f ab c gde // h j k
5.2 字符变量与字符串常量
字符变量:
char类型,占1字节,存储字符的ASCII码,可与整型互通字符串常量:双引号包裹(如
"abc"),末尾隐含\0作为结束标志("a"占2字节,'a'占1字节)示例代码:字符与整型互通
#include <iostream> using namespace std; int main() { int a = 'A'; // 'A'的ASCII码为65 char b = 32; // 32是空格的ASCII码 char c = a + b; // 65+32=97,对应'a' cout << (int)c << endl; // 输出97(整型形式) cout << c << endl; // 输出'a'(字符形式) return 0; }
六、运算符与表达式
6.1 算术运算符
基本运算符:
+(加)、-(减)、*(乘)、/(除)、%(取余)注意:整数除法舍弃小数(
5/3=1),%仅支持整型(符号由被除数决定,如-7%4=-3)
6.2 强制类型转换
格式:
(目标类型)表达式,仅临时转换值,不改变原变量类型示例代码:强制类型转换
#include <iostream> using namespace std; int main() { float x = 3.6; int i = (int)x; // 临时转换x的值为3,x本身仍为3.6 cout << "x=" << x << ", i=" << i << endl; // 运行结果:x=3.6, i=3 return 0; }
6.3 自增自减运算符
++i/--i:先增减1,再使用值
i++/i--:先使用值,再增减1示例代码:自增运算符区别
#include <iostream> using namespace std; int main() { int i = 0, j; j = i++; // 先赋值j=0,再i=1 cout << i << " " << j << endl; // 输出1 0 i = 0; j = ++i; // 先i=1,再赋值j=1 cout << i << " " << j << endl; // 输出1 1 return 0; }
6.4 逗号运算符
格式:
表达式1, 表达式2, ..., 表达式n求值顺序:从左到右,整个表达式的值为最后一个表达式的值
示例代码:逗号表达式
#include <iostream> using namespace std; int main() { int a = 2, b = 4, c = 6, x, y; y = (x = a + b, b + c); // x=6,y=10 cout << "y=" << y << ", x=" << x << endl; // 运行结果:y=10, x=6 return 0; }
6.5 混合运算类型转换
不同类型数据混合运算时,按“低级别→高级别”自动转换:
char/short → int → unsigned → long → float → double
七、总结
本章核心是掌握“数据如何描述”和“数据如何操作”:数据类型决定了数据的存储方式和范围,常量与变量是数据的载体,运算符与表达式实现了数据的计算逻辑。学习时需重点关注:
变量命名规范和初始化要求
整型溢出、浮点型舍入误差等边界问题
字符与整型的互通性、字符串与字符的区别
运算符优先级(先乘除后加减)和结合性(多数自左至右)
建议结合示例代码反复练习,重点掌握符号常量、转义字符、自增自减、强制类型转换的使用场景,为后续循环、分支等语法学习打下基础。