news 2026/5/14 11:27:04

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/5/9 8:44:01

与节点-–-behaviac

原文 与&#xff08;And&#xff09;节点接受两个以上的条件子节点&#xff0c;执行逻辑”与&#xff08;&&&#xff09;”操作&#xff0c;如下图所示&#xff1a; 图1 与节点 只要有一个条件子节点的返回值为失败&#xff0c;与节点则返回失败。所有条件子节点都返…

作者头像 李华
网站建设 2026/5/9 21:45:48

CesiumJS体素渲染实战指南:从入门到精通

CesiumJS体素渲染实战指南&#xff1a;从入门到精通 【免费下载链接】cesium An open-source JavaScript library for world-class 3D globes and maps :earth_americas: 项目地址: https://gitcode.com/GitHub_Trending/ce/cesium CesiumJS是一个开源的JavaScript库&am…

作者头像 李华
网站建设 2026/5/10 6:49:29

魔兽争霸III终极兼容性修复工具:简单快速解决所有游戏问题

魔兽争霸III终极兼容性修复工具&#xff1a;简单快速解决所有游戏问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在新系统上频…

作者头像 李华
网站建设 2026/5/14 11:11:44

思考与练习(第六章 程序控制结构)

一、单项选择题&#xff08;本大题共 10 小题&#xff09;1、以下关于 Python 程序三种基本控制结构的描述&#xff0c;错误的是&#xff1a;① 顺序结构是语句从上到下依次执行② 选择结构是根据条件判断执行不同的路径③ 循环结构是根据条件重复执行一段代码④ 三种结构可以完…

作者头像 李华
网站建设 2026/5/9 2:26:33

性价比高的智能招聘会高端供应商

智能招聘会行业分析&#xff1a;聘才猫人力资源大模型引领变革行业痛点分析当前智能招聘会领域面临着诸多技术挑战。一方面&#xff0c;招聘会的智能化程度不够&#xff0c;无法精准匹配企业需求与求职者能力&#xff0c;导致招聘效率低下。数据表明&#xff0c;传统智能招聘会…

作者头像 李华