C语言知识梳理第一期
知识梳理第一期本人仅分享个人学习C语言过程中遇到的重难点问题以及踩坑仅供参考。本人使用的编程软件为VS 20261 . ASCII码值ASCIIAmerican Standard Code for Information Interchange美国信息交换标准代码是计算机中最基础的字符编码标准。它用 7 位二进制数0~127来表示 128 个字符包括英文字母、数字、标点符号以及一些控制字符。理解 ASCII 码是理解 C 语言中字符与整数关系的第一步。几组常用数据字符A~Z 65 ~ 90字符a~ z 97 ~ 122实际上你只需要记住一共有26个字母A对应65且a与A的ASCII码值差值为32即可轻松记住所有字母的ASCII码值。数字字符0~9的ASCII码值从48 ~ 57附表ASCII码表2 . 常用转义字符\n换行符 将光标移动到下一行的开头\0空字符 字符串的结束标志ASCII 值为 0。\反斜杠 表示它们“字面”的含义双引号 表示它们“字面”的含义’单引号 表示它们“字面”的含义?问号 在书写连续多个问号时使用用于防止多个问号被编译器误认为是三字母词。插播一下三字母词trigraph是C语言的一种早期特性用三个字符的序列以 ?? 开头来表示单个字符例如 ?? 会被替换为 #、??/ 被替换为 \。虽然现代编译器默认已不推荐使用了但标准仍保留了这一特性。? 的作用就是防止 ??? 被误解析为三字母词的开头。八进制: \ddd1~3 位八进制数字例如 \101 代表 ‘A’因为 A 的 ASCII 是 65八进制为 101十六进制: \xdd1~2 位十六进制数字例如 \x41 代表 ‘A’因为 A 的 ASCII 是 65十六进制为 413 . 数据类型3.1 字符型在C语言中用char表示字符类型3.2 整型在C语言中用int表示整型类型3.3 浮点型float单精度浮点数通常占 4 字节。double双精度浮点数通常占 8 字节精度更高最常用long double扩展精度浮点数通常占 8、12 或 16 字节3.4 布尔类型_Bool: 用于表示真假3.5 各种数据类型的长度接下来内容我觉得对新手很不友好先介绍一个关键字sizeof装逼一点说sizeof是一个一元运算符用于以字节为单位返回操作数类型或表达式的存储大小结果类型为 size_t。讲人话sizeof就是用来量数据在电脑里占了几个格子。注意事项sizeof 后面主要跟以下四类数据1.1数据类型名称必须加括号sizeof (int);// 测量基本类型sizeof (double);// 测量浮点类型sizeof (struct Node);// 测量自定义的结构体类型sizeof ( int * );// 测量指针类型1.2变量名括号可省int a 10;sizeof a ;// 测量变量 a 的大小1.3各种表达式括号通常建议保留sizeof(10 3.14);// 结果是 8因为 int double 结果是 double 类型sizeof(i);// 结果是 4且 i 的值不会增加sizeof( func( ) );// 结果取决于 func() 的返回值类型若返回 int 则为4且 func() 不会被调用注意不能是函数本身sizeof(func) 是非法的因为函数名不能直接代表一个数据对象但 sizeof(func()) 是合法的因为它测量的是函数返回值的类型。1.4数组名特殊在 C 语言中数组名通常会自动退化为指针但在 sizeof 后面是唯一的例外。当数组名作为 sizeof 的操作数时它代表的是整个数组。int arr[10];sizeof(arr);// 结果是 40 (10个元素 × 4字节)而不是指针的大小(8)sizeof 的计算结果是size_t类型的。size_t类型在 printf 中使用的专属占位符是%zu。.优先级陷阱极易出错sizeof 作为一个一元运算符它的优先级非常高仅次于括号、后缀自增/自减等。现象当它与其他运算符混合使用时如果不加括号很容易产生意想不到的结果。示例int a 10;printf(“%zu\n”, sizeof a 10);// 错误直觉先算 a10再求大小// 实际执行sizeof(a) 10 - 结果是 4 10 14// 正确做法如果真想算表达式的大小必须加括号printf(“%zu\n”, sizeof(a 10));// 结果是 43.6 数据类型长度3.6.1char (1 字节)bool(1 字节short (2 字节)int (4 字节)float (4 字节)long (在 32位系统或 Windows 下的 VS2026中占4 字节在 64位 Linux 系统中占 8 个字节)long long (8 字节)double (8 字节)指针类型 (void *) (8 字节)long double (在vs2026中占8 字节在gcc环境中占16字节)注意如果是编程新手的小伙伴们可能会被这些名词弄得晕头转向所以我在下面列举一些我学习中遇到的困惑希望能够帮助到大家。Q 字节是什么鬼A “字节”英文叫 Byte通常简写为 B是计算机中用来表示存储空间大小的最基本计量单位规定 8 个位bit 1 个字节Byte。那么bit又是什么呢位bit是计算机最小的数据单位只能存 1 个 0 或 1。更具体点说1 个字节由8 个 0 或 1组成比如 01000001。这 8 个 0 和 1 的组合刚好可以表示 256 种不同的状态0~255足够用来表示英文字母、数字和标点符号了。Q double和float在使用中的区别是什么A 1.C 语言中所有的小数常量如 3.14默认都是double 类型。如果你写 float f 3.14;编译器会报警告因为把高精度赋给低精度会丢失数据必须写成float f 3.14f;才行。如果你直接用 double f 3.14;则完全合法且不会有任何警告。2.float输入必须用%f。double输入必须用%lf如果用 %f 读入 double 会导致数据错误因为%f只分配了4 字节的空间而 double 需要8 字节。。输出时float 用%fdouble 用%f或%lf都可以。3.注意**“精度丢失”**问题float的极限只有6~7 位有效数字。如果你写 float a 123456.789f;打印出来可能是 123456.789062后面的数字已经错乱了。double的表现有15~16 位有效数字能精确表示更多位数。大数加小数的 “吞没 ” 效应当 float 的数值非常大时例如 16777216.0f当你加10000结果会正常变成 16787216.0f但是如果给它加 1结果依然是 16777216.0f。因为它的精度不够根本表示不出这个 1 的变化。4.绝对不要直接用 “” 比较浮点数由于上述的精度丢失问题浮点数的计算结果往往带有微小的误差。错误示范if (0.1 0.2 0.3)。这个判断在 C 语言中是假False的。正确做法通过判断两个数的差值是否小于一个极小值误差容限来比较。例如#include math.h#define EPS 1e-6if (fabs(a - b) EPS) { … }如果你有兴趣了解上面这段代码可以自行去问下AI在这里我不过多赘述。5.在实际开发中绝大多数情况下默认推荐使用double。在现代计算机的 CPU 架构下处理 double 和 float 的速度差距已经非常小了日常应用几乎感觉不到性能损耗。Q short,long,long long是什么意思**A **在 C 语言中short、long和long long都是整型Integer的修饰词。使用建议默认用 int95% 以上的情况普通的 int 就完全够用了。需要大数用 long long如果你在做算法题发现普通的 int 算出来结果不对溢出了直接无脑换成 long long。尽量别用 long因为 long 在不同系统下大小不一样Windows 下是 4 字节Linux 下是 8 字节跨平台移植时容易出 Bug。3.7 signed和unsignedC 语言使用 signed 和 unsigned 关键字修饰字符型和整型类型。signed关键字表示一个类型带有正负号包含负值unsigned关键字表示该类型不带有正负号只能表示零和正整数。对于int类型默认是带有正负号的也就是说int等同于signed int。由于这是默认情况关键字signed一般都省略不写但是写了也不算错。Q 使用unsigned的好处是什么A 同样长度的内存能够表示的最大整数值增大了一倍。比如16位的signed short int的取值范围是: -32768~32767最大是32767而unsigned short int的取值范围是: 0~65535最大值增大到了65535。unsigned int里面的int可以省略所以以下两行代码效果相同。1unsigned int a;2unsigned a;字符类型char也可以设置signed和unsigned。1signed char c;// 范围为 -128 到 1272unsigned char c;// 范围为 0 到 255注意C语言规定char类型默认是否带有正负号由当前系统决定。这就是说char不等同于signed char它有可能是signed char也有可能是unsigned char。日常使用时如果你只是把 char 当作纯粹的字符来使用比如存英文字母、标点符号或者处理普通的文本字符串直接写 char 即可。当你把 char 当作极小的整数来参与数学计算、或者处理底层数据时必须明确加上修饰词。这一点与int不同int就是等同于signed int。接下来我们要学习一个比较深入的概念。在 C 语言中字符char本质上就是整数数字之前我已经粗略介绍过ASCII 码表 计算机不知道什么是字母 ‘A’什么是汉字它只认识数字0 和 1 的组合。在 C 语言中charcharacter虽然名字叫“字符”但它在内存中实际上就是一个占 1 个字节的小整数。当你写char c ‘A’;时计算机在内存里实际存下的数字是 65因为 ASCII 表规定 A 对应 65。当你写char c ‘a’;时计算机存下的数字是 97。当你写char c ‘0’;时注意这不是数字 0而是字符 0它在内存里存下的数字是 48。Q 既然 char 本质上就是数字那我直接用 int 不就行了为什么还要搞个 charA 因为int 通常占 4 个字节而 char 只占 1 个字节。如果你只是存一个字母用 int 会浪费 75% 的空间。并且分不同情境是使用 int 和 char可以使语义更清晰。例当你写下 char c ‘A’; 时任何看到这段代码的程序员都会立刻明白“哦这里存的是一个字符”。如果你写 int c 65;别人看代码时会疑惑“这是一个计数器还是数组下标还是某个状态码” 你必须额外写注释去解释它其实是个字符增加了沟通成本。同时我必须要解释另一个重要的问题在 C 语言中变量最终被打印成什么样子完全取决于你使用的 % 占位符格式说明符而不是变量本身的类型。例1.char c ‘A’;底层真相内存里存的是数字 65。输出%cprintf(“%c”, c); 告诉编译器“把它当字符看”输出 A。输出%dprintf(“%d”, c); 告诉编译器“把它当整数看”输出 65。2.int c 65;底层真相内存里存的也是数字 65。输出%dprintf(“%d”, c); 告诉编译器“把它当整数看”输出 65。输出%cprintf(“%c”, c); 告诉编译器“把它当字符看”输出 A。以上是我个人学习中遇到的难点问题希望能够对你有帮助虚心接受一切批评与指正欢迎讨论

相关新闻

2026年阿里拍卖合作机构怎么选?从流量到交付的甄别指南

2026年阿里拍卖合作机构怎么选?从流量到交付的甄别指南

阿里资产(原阿里拍卖)作为阿里巴巴集团旗下专业资产交易平台,已覆盖近3亿用户,合作超3400家法院、2000余家金融机构。随着线上资产交易规模逐年攀升——据《2025年中国拍卖行业发展报告》,全国通过阿里拍卖等平台成交的…

2026/10/13 6:59:26 阅读更多 →
Python 调生图 API 的最小可用代码 + 并发改造

Python 调生图 API 的最小可用代码 + 并发改造

Python 怎么调 AI 生图 API?三十行跑通 nano banana pro(含重试与异步并发) 网上 Python 调图像生成接口的例子大多绑死某一家 SDK,换个服务就得重写。其实完全不用 SDK——该服务兼容 OpenAI 的 chat/completions 协议&#xff0…

2026/10/10 18:00:13 阅读更多 →
Python 并发编程实战:线程、进程与协程的选择策略

Python 并发编程实战:线程、进程与协程的选择策略

关于并发编程存在三条可选途径, 其一为多线程形式, 其二属多进程方式, 其三是异步协程模式。表面上看这三种方式似乎均可实现同时进行多项事务的效果, 然而它们各自所适用的具体场景的差异程度极大。一旦选错了相应的模型, 在代码已经全部编写完成之后才察觉到性能不但没有提升…

2026/10/12 19:04:17 阅读更多 →

最新新闻

学习 Python 基础语法与工程环境操作流程

学习 Python 基础语法与工程环境操作流程

前言一、基础概念虚拟环境:可以理解成每个项目专属的「Python 独立工具箱」。每个项目单独一套 Python 解释器和第三方安装包,项目之间互不干扰,不会出现 A 项目装的包覆盖 B 项目依赖的情况,删掉环境文件夹就能一键重置&#xff…

2026/10/13 6:59:55 阅读更多 →
陈,读懂生理药理实验多用仪

陈,读懂生理药理实验多用仪

生理药理刺激多用仪属于多功能综合性实验设备,依托数字集成电路对振荡频率分频处理,输出多种标准频率与时间信号。设备可输出前沿陡直、平顶稳定的标准矩形刺激波,波宽与输出电压连续可调,支持单次、双次、定时、连续等多种刺激输…

2026/10/13 6:59:55 阅读更多 →
MCP基本使用

MCP基本使用

MCP版本用日期定义,最早的正式版本2024-11-05,截止当前最新的是2026-07-28(这一版协议有根本性改动,Python SDK需要使用 v2)。下面的概念是针对 2024-11-05 版的,2026-07-28 变成无状态协议了,下…

2026/10/13 6:59:55 阅读更多 →
企业微信 AI 客服答不准怎么办?兜底话术与置信度阈值

企业微信 AI 客服答不准怎么办?兜底话术与置信度阈值

客户问的是一款产品的偏门参数,AI 一本正经地答错了。这种错比不回复更伤:客户按错信息做了决定,回头算在品牌头上。答不准通常不是模型变笨,而是两件事没配好——该兜底的时候它硬答,该收进知识库的问题它够不着。## …

2026/10/13 6:59:55 阅读更多 →
恶意代码概述

恶意代码概述

1. 计算机病毒(Virus)核心特点:必须依附文件,需要人为触发,不能自己网上传播 原理:寄生在正常文件里(exe / 文档)。必须用户手动打开这个带毒文件,病毒才会激活&#xff…

2026/10/13 6:59:55 阅读更多 →
恶意代码检测毕设实战:PE特征提取与机器学习模型训练

恶意代码检测毕设实战:PE特征提取与机器学习模型训练

简介:这份资源是一套基于机器学习的恶意代码检测项目源码,面向计算机、人工智能、通信工程、自动化等专业的在校学生与教师,也适合作为毕设、课程设计或项目立项演示的参考。项目围绕恶意代码的特征提取、向量化与模型训练展开,涵…

2026/10/13 6:58:55 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →