news 2026/1/8 13:14:07

C++入门详解2:数据类型、运算符与表达式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++入门详解2:数据类型、运算符与表达式

目录

引言

一、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

  • 类与结构体:classstruct

  • 联合: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_totalstudent_name合法;M.D.John3D64非法)

  • 注意事项:区分大小写(Aa是不同变量),建议“见名知意”,需先定义后使用

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.1233.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

七、总结

本章核心是掌握“数据如何描述”和“数据如何操作”:数据类型决定了数据的存储方式和范围,常量与变量是数据的载体,运算符与表达式实现了数据的计算逻辑。学习时需重点关注:

  1. 变量命名规范和初始化要求

  2. 整型溢出、浮点型舍入误差等边界问题

  3. 字符与整型的互通性、字符串与字符的区别

  4. 运算符优先级(先乘除后加减)和结合性(多数自左至右)

建议结合示例代码反复练习,重点掌握符号常量、转义字符、自增自减、强制类型转换的使用场景,为后续循环、分支等语法学习打下基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/31 23:27:33

ViGEmBus虚拟手柄驱动:从内核到应用的完整技术解析

ViGEmBus虚拟手柄驱动&#xff1a;从内核到应用的完整技术解析 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 在游戏外设兼容性领域&#xff0c;一个看似简单的问题困扰着无数玩家和开发者&#xff1a;如何让非标准手柄在Windows系…

作者头像 李华
网站建设 2025/12/31 23:27:31

论文分享|重新思考循环神经网络与图像分类的改进(Rethinking Recurrent Neural Networks and Other Improvements for Image Class)

一、 引言&#xff1a;打破常规的研究视角 在深度学习领域&#xff0c;模型架构的创新往往遵循着清晰的“分工”。卷积神经网络凭借其强大的空间特征提取能力&#xff0c;自AlexNet以来一直是图像识别任务的绝对主力。而循环神经网络&#xff0c;则因其独特的序列建模能力&…

作者头像 李华
网站建设 2025/12/31 23:27:11

RL | 速读 IJCAI 2025 的强化学习论文

59 Multi-granularity Knowledge Transfer for Continual Reinforcement Learning - 为持续 RL 而设计的多粒度知识迁移Continual reinforcement learning (CRL) empowers RL agents with the ability to learn a sequence of tasks, accumulating knowledge learned in the pa…

作者头像 李华
网站建设 2025/12/31 23:27:10

Wiseflow开源许可证完整指南:合规使用与企业部署实战手册

Wiseflow开源许可证完整指南&#xff1a;合规使用与企业部署实战手册 【免费下载链接】wiseflow Wiseflow is an agile information mining tool that extracts concise messages from various sources such as websites, WeChat official accounts, social platforms, etc. It…

作者头像 李华
网站建设 2026/1/4 2:04:15

科大讯飞语音引擎:让Android设备开口说话

科大讯飞语音引擎&#xff1a;让Android设备开口说话 【免费下载链接】科大讯飞语音引擎TTS.apk下载 本仓库提供科大讯飞语音引擎TTS.apk的下载&#xff0c;支持32位和64位版本&#xff0c;适用于最新的Android系统。该语音引擎为Android平台提供中文发音的TTS&#xff08;文本…

作者头像 李华