news 2026/4/23 15:07:57

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:24:39

终极免费解锁付费内容限制:Chrome扩展完整使用指南

在数字信息时代&#xff0c;优质内容却被访问限制层层封锁&#xff0c;让无数求知若渴的用户望而却步。现在&#xff0c;Bypass Paywalls Clean Chrome扩展为您提供了完美的解决方案&#xff0c;让您轻松突破各大媒体平台的访问限制&#xff0c;畅享丰富优质内容。 【免费下载链…

作者头像 李华
网站建设 2026/4/23 12:20:20

PHP 图像处理实战 GD/Imagick 从入门到精通,构建高性能图像服务

心价值构建可靠的 PHP 图像处理流水线&#xff0c;支持尺寸调整、裁剪、方向校正和文件优化基于明确的技术指标选择 GD 或 Imagick&#xff0c;避免盲目决策掌握 cover 和 contain 适配模式的正确应用&#xff0c;支持自定义焦点合理选择现代图像格式&#xff08;WebP/AVIF、渐…

作者头像 李华
网站建设 2026/4/23 1:02:44

思考与练习之答案与解析(第五章 基本数据类型)

一、单项选择题答案及解析1、②Python 的整数&#xff08;int&#xff09;类型采用可变长度的表示方式&#xff0c;能够自动处理大整数&#xff0c;其大小只受计算机可用内存的限制&#xff0c;这与许多其他语言&#xff08;如 C、Java&#xff09;的固定长度整数有本质区别。这…

作者头像 李华
网站建设 2026/4/23 13:09:40

告别腾讯游戏卡顿:sguard_limit资源限制器完整使用指南

还在为腾讯游戏关键时刻的突然卡顿而烦恼吗&#xff1f;ACE-Guard反作弊系统虽然保障了游戏安全&#xff0c;但其资源占用机制却成为游戏流畅度的"主要影响因素"。本文将为你详细解析sguard_limit这款专业资源管理工具的安装配置方法&#xff0c;让你的游戏体验重回巅…

作者头像 李华
网站建设 2026/4/23 12:32:10

12月17号:买入和博弈预期有关

什么时候可以买入&#xff1f;无非是看到了熟悉的模式买点&#xff0c;拆解的话&#xff0c;可能是看到市场情绪连续分岐达到了冰点、可能看到了情绪昨天分岐今天竞价转修复、可能看到了市场容错率在回暖并且有明显的抗跌逆势的品种&#xff0c;总统来说就是看到了一些可以进攻…

作者头像 李华
网站建设 2026/4/23 12:32:21

Memory MCP Server终极指南:构建AI持久记忆系统

Memory MCP Server终极指南&#xff1a;构建AI持久记忆系统 【免费下载链接】servers Model Context Protocol Servers 项目地址: https://gitcode.com/GitHub_Trending/se/servers 你是否曾经遇到过这样的困扰&#xff1a;每次与AI助手对话都要重复介绍自己的背景信息&…

作者头像 李华