<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Dream Blog</title><description>Demo site</description><link>https://firefly.cuteleaf.cn/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.16.8</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年9月27日 11:14:33</lastBuildDate><item><title>C 语言发展史</title><link>https://firefly.cuteleaf.cn/posts/language/c/10c%E8%AF%AD%E8%A8%80%E4%BB%8B%E7%BB%8D/10c%E8%AF%AD%E8%A8%80%E5%8F%91%E5%B1%95%E5%8F%B2/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/10c%E8%AF%AD%E8%A8%80%E4%BB%8B%E7%BB%8D/10c%E8%AF%AD%E8%A8%80%E5%8F%91%E5%B1%95%E5%8F%B2/</guid><description>了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;C 语言发展史&lt;a href=&quot;#c-语言发展史&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;C 语言由丹尼斯·里奇（Dennis Ritchie）于 20 世纪 70 年代初在贝尔实验室主持设计。它最初服务于 UNIX 操作系统开发，核心目标是在运行效率、底层控制能力和源代码可移植性之间取得平衡。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【一】C 语言诞生的背景&lt;a href=&quot;#一c-语言诞生的背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;早期操作系统主要使用汇编语言编写。汇编语言执行效率高，也能直接控制硬件，但它与具体处理器紧密相关：更换硬件平台后，程序往往需要大幅重写。&lt;/p&gt;&lt;p&gt;高级语言虽然更容易编写和移植，当时却难以同时满足系统软件对运行效率和底层操作的要求。C 语言正是在这一矛盾中逐步形成的。&lt;/p&gt;&lt;p&gt;其演进关系可以概括为：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;BCPL（1967）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;B 语言（1969）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;↓&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;C 语言（约 1972）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h2&gt;【1】BCPL 语言&lt;a href=&quot;#1bcpl-语言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;1967 年，马丁·理查兹（Martin Richards）设计了 BCPL。它是一种结构简单、便于编写编译器的无类型语言，对后来的 B 语言产生了直接影响。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】B 语言&lt;a href=&quot;#2b-语言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;1969 年前后，肯·汤普森（Ken Thompson）在贝尔实验室以 BCPL 为基础设计了 B 语言，并将其用于早期 UNIX 系统的开发。&lt;/p&gt;&lt;p&gt;B 语言采用“无类型”的设计，适合当时字长固定的计算机，但在 PDP-11 等新硬件上逐渐暴露出数据类型不足、运行效率不高等问题。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】C 语言诞生&lt;a href=&quot;#3c-语言诞生&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;1971—1973 年间，丹尼斯·里奇对 B 语言进行改进，逐步加入字符、整数、指针、数组和结构体等机制。改进后的语言最初被称为“New B”，后来正式命名为 C。&lt;/p&gt;&lt;p&gt;1973 年，UNIX 内核的大部分代码被改用 C 语言编写。这一实践证明：操作系统并非只能使用汇编语言开发，也使 UNIX 更容易被移植到不同的计算机平台。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】重要发展时间线&lt;a href=&quot;#二重要发展时间线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;时间&lt;/th&gt;&lt;th&gt;事件&lt;/th&gt;&lt;th&gt;意义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1967 年&lt;/td&gt;&lt;td&gt;BCPL 语言诞生&lt;/td&gt;&lt;td&gt;为 B 语言提供设计基础&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1969 年&lt;/td&gt;&lt;td&gt;肯·汤普森设计 B 语言&lt;/td&gt;&lt;td&gt;用于早期 UNIX 开发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1972 年前后&lt;/td&gt;&lt;td&gt;丹尼斯·里奇设计 C 语言&lt;/td&gt;&lt;td&gt;加入数据类型等重要机制&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1973 年&lt;/td&gt;&lt;td&gt;UNIX 内核大部分改用 C 编写&lt;/td&gt;&lt;td&gt;验证了 C 语言的系统编程能力和可移植性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1978 年&lt;/td&gt;&lt;td&gt;《The C Programming Language》第一版出版&lt;/td&gt;&lt;td&gt;K&amp;amp;R C 成为事实上的语言规范&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1983 年&lt;/td&gt;&lt;td&gt;ANSI 成立 X3J11 委员会&lt;/td&gt;&lt;td&gt;C 语言标准化工作正式展开&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1989 年&lt;/td&gt;&lt;td&gt;ANSI 发布 C89&lt;/td&gt;&lt;td&gt;C 语言的第一个正式标准&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1990 年&lt;/td&gt;&lt;td&gt;ISO 发布 C90&lt;/td&gt;&lt;td&gt;将 C89 纳入国际标准体系&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1995 年&lt;/td&gt;&lt;td&gt;发布 C95 修订案&lt;/td&gt;&lt;td&gt;增强宽字符和多字节字符支持&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1999 年&lt;/td&gt;&lt;td&gt;发布 C99&lt;/td&gt;&lt;td&gt;语言功能和标准库得到大幅扩展&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2011 年&lt;/td&gt;&lt;td&gt;发布 C11&lt;/td&gt;&lt;td&gt;引入原子操作、线程和泛型选择等功能&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2018 年&lt;/td&gt;&lt;td&gt;发布 C17&lt;/td&gt;&lt;td&gt;主要修正和澄清 C11&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2024 年&lt;/td&gt;&lt;td&gt;ISO/IEC 9899&amp;lt;2024&amp;gt; 正式发布&lt;/td&gt;&lt;td&gt;通常称为 C23，是当前主要标准版本&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】K&amp;amp;R C 与标准化&lt;a href=&quot;#三kr-c-与标准化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;1978 年，布莱恩·柯林汉（Brian Kernighan）和丹尼斯·里奇合著的《C 程序设计语言》（&lt;em&gt;The C Programming Language&lt;/em&gt;）第一版出版。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-48-35-f7d58bb0-s28292981-1789996115038-8-e0d035.jpg&quot; alt=&quot;《C 程序设计语言》封面&quot; /&gt;&lt;figcaption&gt;《C 程序设计语言》封面&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;书中描述的 C 语言后来被称为 &lt;strong&gt;K&amp;amp;R C&lt;/strong&gt;。它不是由标准化组织发布的正式标准，但在 C89 出现以前长期被视为事实上的规范。&lt;/p&gt;&lt;p&gt;随着 C 语言不断普及，不同编译器对语言的实现逐渐产生差异。为了提高程序的兼容性和可移植性，美国国家标准协会（ANSI）于 1983 年成立 X3J11 委员会，并在 1989 年发布第一个正式标准 C89。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】C 语言标准演进&lt;a href=&quot;#四c-语言标准演进&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;【1】C89 与 C90&lt;a href=&quot;#1c89-与-c90&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;C89&lt;/strong&gt;：ANSI X3.159-1989。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C90&lt;/strong&gt;：ISO/IEC 9899&amp;lt;1990&amp;gt;。&lt;/li&gt;
&lt;li&gt;两者在技术内容上基本相同，通常合称为 &lt;strong&gt;ANSI C&lt;/strong&gt; 或 &lt;strong&gt;C89/C90&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;引入函数原型，完善类型检查。&lt;/li&gt;
&lt;li&gt;标准化 &lt;code&gt;void&lt;/code&gt;、&lt;code&gt;const&lt;/code&gt;、&lt;code&gt;volatile&lt;/code&gt; 等类型和限定符。&lt;/li&gt;
&lt;li&gt;系统定义标准头文件和标准库。&lt;/li&gt;
&lt;li&gt;明确预处理、类型转换和程序行为规则。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】C95&lt;a href=&quot;#2c95&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C95 并不是一次完整重写的语言标准，而是对 C90 的修订，正式形式为 C90 的 Amendment 1。&lt;/p&gt;&lt;p&gt;主要变化包括：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;加强宽字符和多字节字符支持。&lt;/li&gt;
&lt;li&gt;增加 &lt;code&gt;&amp;lt;wchar.h&amp;gt;&lt;/code&gt; 和 &lt;code&gt;&amp;lt;wctype.h&amp;gt;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;增加用于替代部分特殊字符的双字符组（digraph）。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】C99&lt;a href=&quot;#3c99&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C99 是 C 语言历史上一次重要更新，代表性变化包括：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;允许使用 &lt;code&gt;//&lt;/code&gt; 单行注释。&lt;/li&gt;
&lt;li&gt;允许在语句之间声明变量。&lt;/li&gt;
&lt;li&gt;允许在 &lt;code&gt;for&lt;/code&gt; 初始化部分声明变量。&lt;/li&gt;
&lt;li&gt;增加 &lt;code&gt;long long&lt;/code&gt;、&lt;code&gt;_Bool&lt;/code&gt; 和复数类型。&lt;/li&gt;
&lt;li&gt;引入 &lt;code&gt;inline&lt;/code&gt; 和 &lt;code&gt;restrict&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;支持可变长度数组（VLA）。&lt;/li&gt;
&lt;li&gt;支持指定初始化器、复合字面量和柔性数组成员。&lt;/li&gt;
&lt;li&gt;增加 &lt;code&gt;&amp;lt;stdint.h&amp;gt;&lt;/code&gt; 等标准头文件。&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;从 C11 开始，可变长度数组变为实现可选功能，并不是所有编译器都完整支持。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【4】C11&lt;a href=&quot;#4c11&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C11 更关注并发编程、类型安全和现代硬件支持，代表性变化包括：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;引入 &lt;code&gt;_Atomic&lt;/code&gt; 和原子操作。&lt;/li&gt;
&lt;li&gt;增加 &lt;code&gt;&amp;lt;threads.h&amp;gt;&lt;/code&gt; 线程库。&lt;/li&gt;
&lt;li&gt;引入 &lt;code&gt;_Generic&lt;/code&gt; 泛型选择。&lt;/li&gt;
&lt;li&gt;引入 &lt;code&gt;_Static_assert&lt;/code&gt; 静态断言。&lt;/li&gt;
&lt;li&gt;支持匿名结构体和匿名联合体。&lt;/li&gt;
&lt;li&gt;增加对齐控制功能。&lt;/li&gt;
&lt;li&gt;改进 Unicode 字符支持。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;线程和原子操作在部分实现中属于可选功能，实际使用时需要检查编译器及标准库支持情况。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【5】C17（C18）&lt;a href=&quot;#5c17c18&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C17 的正式标准编号为 &lt;strong&gt;ISO/IEC 9899&amp;lt;2018&amp;gt;&lt;/strong&gt;，因此也经常被称为 C18。&lt;/p&gt;&lt;p&gt;它没有加入重要的新语言特性，主要用于修正 C11 中的缺陷、歧义和规范表述问题，是对 C11 的维护性更新。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【6】C23&lt;a href=&quot;#6c23&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C23 在开发阶段曾被称为 &lt;strong&gt;C2X&lt;/strong&gt;，最终标准文件为 &lt;strong&gt;ISO/IEC 9899&amp;lt;2024&amp;gt;&lt;/strong&gt;。虽然正式文件于 2024 年发布，业界通常仍将这一版本称为 C23。&lt;/p&gt;&lt;p&gt;代表性变化包括：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;增加 &lt;code&gt;nullptr&lt;/code&gt; 和 &lt;code&gt;nullptr_t&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;增加 &lt;code&gt;typeof&lt;/code&gt; 和 &lt;code&gt;typeof_unqual&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;支持 &lt;code&gt;constexpr&lt;/code&gt; 对象。&lt;/li&gt;
&lt;li&gt;支持二进制整数字面量和数字分隔符。&lt;/li&gt;
&lt;li&gt;增加 &lt;code&gt;_BitInt&lt;/code&gt; 位精确整数类型。&lt;/li&gt;
&lt;li&gt;引入 &lt;code&gt;#embed&lt;/code&gt; 预处理指令。&lt;/li&gt;
&lt;li&gt;改进枚举、属性和类型推导能力。&lt;/li&gt;
&lt;li&gt;将 &lt;code&gt;bool&lt;/code&gt;、&lt;code&gt;true&lt;/code&gt;、&lt;code&gt;false&lt;/code&gt; 纳入语言本身。&lt;/li&gt;
&lt;li&gt;删除部分过时的旧式语法。&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;C23 较新，不同编译器对各项特性的支持程度可能不同。使用前应查看具体编译器版本的说明。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【五】各版本对比&lt;a href=&quot;#五各版本对比&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;版本&lt;/th&gt;&lt;th&gt;发布时间&lt;/th&gt;&lt;th&gt;定位&lt;/th&gt;&lt;th&gt;代表性变化&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;K&amp;amp;R C&lt;/td&gt;&lt;td&gt;1978 年&lt;/td&gt;&lt;td&gt;事实规范&lt;/td&gt;&lt;td&gt;描述标准化以前的经典 C 语言&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C89/C90&lt;/td&gt;&lt;td&gt;1989/1990 年&lt;/td&gt;&lt;td&gt;首个正式标准&lt;/td&gt;&lt;td&gt;函数原型、类型限定符、标准库&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C95&lt;/td&gt;&lt;td&gt;1995 年&lt;/td&gt;&lt;td&gt;C90 修订案&lt;/td&gt;&lt;td&gt;宽字符、多字节字符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C99&lt;/td&gt;&lt;td&gt;1999 年&lt;/td&gt;&lt;td&gt;大规模功能扩展&lt;/td&gt;&lt;td&gt;&lt;code&gt;//&lt;/code&gt;、&lt;code&gt;inline&lt;/code&gt;、VLA、&lt;code&gt;stdint.h&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C11&lt;/td&gt;&lt;td&gt;2011 年&lt;/td&gt;&lt;td&gt;现代化更新&lt;/td&gt;&lt;td&gt;原子操作、线程、泛型选择、静态断言&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C17&lt;/td&gt;&lt;td&gt;2018 年&lt;/td&gt;&lt;td&gt;维护性版本&lt;/td&gt;&lt;td&gt;修正和澄清 C11&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C23&lt;/td&gt;&lt;td&gt;2024 年正式发布&lt;/td&gt;&lt;td&gt;当前主要标准版本&lt;/td&gt;&lt;td&gt;&lt;code&gt;nullptr&lt;/code&gt;、&lt;code&gt;typeof&lt;/code&gt;、&lt;code&gt;constexpr&lt;/code&gt;、&lt;code&gt;#embed&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【六】C 语言的主要特点&lt;a href=&quot;#六c-语言的主要特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;【1】运行效率高&lt;a href=&quot;#1运行效率高&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C 语言提供较少的运行时抽象，程序通常可以被编译成高效的机器代码，因此适合对性能和资源占用要求较高的场景。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】具备底层控制能力&lt;a href=&quot;#2具备底层控制能力&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;指针、位运算和内存操作使 C 语言能够直接处理内存地址、寄存器及硬件资源。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】源代码可移植性较好&lt;a href=&quot;#3源代码可移植性较好&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;符合标准且避免依赖平台特性的 C 程序，通常只需少量修改或重新编译，就能运行在不同平台上。&lt;/p&gt;&lt;p&gt;“可移植”并不意味着所有 C 程序在任何平台上都会得到完全相同的结果。数据类型长度、字节序及实现定义行为等仍可能存在差异。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【4】语言核心精简&lt;a href=&quot;#4语言核心精简&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C 语言的语法和核心机制相对精简，许多功能通过标准库或第三方库提供。这种设计带来了灵活性，也要求程序员主动管理资源。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【5】需要关注内存安全&lt;a href=&quot;#5需要关注内存安全&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C 语言允许直接操作内存，但不会自动进行边界检查或垃圾回收。数组越界、空指针、悬空指针和内存泄漏都是常见风险。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【七】主要应用领域&lt;a href=&quot;#七主要应用领域&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;操作系统与内核&lt;/strong&gt;：UNIX、Linux 内核及部分 Windows 系统组件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;嵌入式系统&lt;/strong&gt;：单片机、汽车电子、工业控制和物联网设备。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;驱动程序与固件&lt;/strong&gt;：需要直接操作硬件和寄存器的程序。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编译器与运行时&lt;/strong&gt;：编译器、解释器及语言运行库。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据库与基础软件&lt;/strong&gt;：数据库、网络服务和高性能基础组件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨语言接口&lt;/strong&gt;：C ABI 简单而稳定，许多语言通过 C 接口调用系统库。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【八】C 语言的影响&lt;a href=&quot;#八c-语言的影响&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;C 语言对后来的编程语言产生了深远影响。C++ 和 Objective-C 直接建立在 C 的基础上；Java、C#、JavaScript 等语言也借鉴了大量 C 风格语法。&lt;/p&gt;&lt;p&gt;更重要的是，C 语言及其 ABI 已成为操作系统、硬件和高级编程语言之间的重要接口。即使应用程序并不直接使用 C 编写，其底层往往仍依赖 C 标准库、系统调用或由 C 实现的运行时组件。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【九】常见认识误区&lt;a href=&quot;#九常见认识误区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;C 语言不是在 1972 年某一天突然完成的。&lt;/strong&gt;&lt;br /&gt;
它是在 1971—1973 年间逐步设计和完善的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;K&amp;amp;R C 不是正式标准。&lt;/strong&gt;&lt;br /&gt;
它是 C89 出现以前被广泛采用的事实规范。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;C89 和 C90 不是两个差异明显的版本。&lt;/strong&gt;&lt;br /&gt;
二者技术内容基本相同，只是发布组织和年份不同。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;C17 和 C18 通常指同一代标准。&lt;/strong&gt;&lt;br /&gt;
C17 是常用名称，正式标准文件发布于 2018 年。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;C2X 已经不再是“计划中的标准”。&lt;/strong&gt;&lt;br /&gt;
它最终发展为 C23，并以 ISO/IEC 9899&amp;lt;2024&amp;gt; 的形式正式发布。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;可移植性不等于完全与平台无关。&lt;/strong&gt;&lt;br /&gt;
编写可移植程序仍需避免未定义行为和平台相关假设。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【十】总结&lt;a href=&quot;#十总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;C 语言的发展可以概括为：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;使用接近高级语言的结构化表达方式，获得接近底层硬件的控制能力。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;它诞生于 UNIX 操作系统的开发需求，经过 K&amp;amp;R C、C89/C90、C99、C11、C17 和 C23 等阶段不断完善。虽然现代编程语言不断涌现，C 语言仍然是操作系统、嵌入式开发、编译器和高性能基础软件领域的重要工具。&lt;/p&gt;&lt;p&gt;学习 C 语言不仅是学习一种语法，更是在理解内存、数据表示、编译过程及计算机系统的基本工作方式。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【十一】延伸阅读&lt;a href=&quot;#十一延伸阅读&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bell-labs.com/usr/dmr/www/chist.html&quot; target=&quot;_blank&quot;&gt;The Development of the C Language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.open-std.org/jtc1/sc22/wg14/&quot; target=&quot;_blank&quot;&gt;ISO/IEC JTC 1/SC 22/WG 14（C 语言标准工作组）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.iso.org/standard/82075.html&quot; target=&quot;_blank&quot;&gt;ISO/IEC 9899&amp;lt;2024&amp;gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言开发环境的安装与配置</title><link>https://firefly.cuteleaf.cn/posts/language/c/10c%E8%AF%AD%E8%A8%80%E4%BB%8B%E7%BB%8D/20c%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/10c%E8%AF%AD%E8%A8%80%E4%BB%8B%E7%BB%8D/20c%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85/</guid><description>在 Windows、Linux 与 macOS 上安装 C 工具链，配置编辑器，并编译运行第一个 C 程序。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;C 语言开发环境的安装与配置&lt;a href=&quot;#c-语言开发环境的安装与配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;编写并运行一个 C 程序，至少需要以下两类工具：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;代码编辑器或集成开发环境（IDE）&lt;/strong&gt;：用于编写和管理源代码。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C 工具链&lt;/strong&gt;：通常包含编译器、链接器、调试器和构建工具。&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt; Visual Studio Code 只是代码编辑器。安装 C/C++ 扩展后，还需要单独安装 GCC、Clang 或 MSVC 等编译器，才能编译和运行 C 程序。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【一】开发工具的组成&lt;a href=&quot;#一开发工具的组成&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;工具&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;常见选择&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;编辑器 / IDE&lt;/td&gt;&lt;td&gt;编写代码、管理文件、提供代码提示&lt;/td&gt;&lt;td&gt;Visual Studio Code、Visual Studio、CLion、Vim&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;编译器&lt;/td&gt;&lt;td&gt;将 C 源代码翻译为目标代码&lt;/td&gt;&lt;td&gt;GCC、Clang、MSVC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;链接器&lt;/td&gt;&lt;td&gt;将目标文件和库组合成可执行程序&lt;/td&gt;&lt;td&gt;GNU &lt;code&gt;ld&lt;/code&gt;、LLVM &lt;code&gt;lld&lt;/code&gt;、MSVC LINK&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;调试器&lt;/td&gt;&lt;td&gt;单步执行、查看变量和调用栈&lt;/td&gt;&lt;td&gt;GDB、LLDB、Visual Studio Debugger&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;构建工具&lt;/td&gt;&lt;td&gt;自动执行多文件编译和链接&lt;/td&gt;&lt;td&gt;Make、CMake、Ninja&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;C 源文件通常使用 &lt;code&gt;.c&lt;/code&gt; 扩展名，头文件通常使用 &lt;code&gt;.h&lt;/code&gt; 扩展名。例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;hello.c       C 源文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;student.h     头文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】编辑器的选择&lt;a href=&quot;#二编辑器的选择&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;【1】Visual Studio Code&lt;a href=&quot;#1visual-studio-code&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Visual Studio Code（简称 VS Code）体积较小、跨平台且扩展丰富，适合初学者使用。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;下载地址：&lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;Visual Studio Code 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;C/C++ 扩展：&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools&quot; target=&quot;_blank&quot;&gt;Microsoft C/C++&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;安装 VS Code 后，在扩展面板中搜索并安装 Microsoft 发布的 &lt;strong&gt;C/C++&lt;/strong&gt; 扩展。该扩展提供代码补全、语法检查和调试支持，但编译器仍需单独安装。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;初学阶段建议先在终端中手动执行编译命令。这样可以清楚理解“源文件 → 编译 → 可执行文件 → 运行”的过程。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】其他选择&lt;a href=&quot;#2其他选择&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Studio&lt;/strong&gt;：适合 Windows，内置 MSVC 工具链和图形化调试器。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLion&lt;/strong&gt;：跨平台商业 IDE，学生和符合条件的开源开发者可申请免费许可。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vim / Neovim / Emacs&lt;/strong&gt;：高度可定制，适合熟悉命令行的用户。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sublime Text&lt;/strong&gt;：轻量、启动快，但编译和调试通常需要自行配置。&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;Atom 已于 2022 年停止官方维护，不建议再作为新的 C 语言学习环境。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】Windows 环境安装（推荐）&lt;a href=&quot;#三windows-环境安装推荐&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Windows 上可以选择 GCC、MSVC 或 WSL 等开发方案。本文采用以下组合搭建 C 语言开发环境：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VS Code + MinGW-w64 工具链（GCC + GDB）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h2&gt;【1】安装 MinGW-w64&lt;a href=&quot;#1安装-mingw-w64&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;为了在 Windows 上使用 GCC，可以安装 MinGW-w64。&lt;/li&gt;
&lt;li&gt;MinGW-w64 是一个开源项目，为 Windows 系统提供 GCC 工具链及相关运行库，支持生成 32 位和 64 位 Windows 应用程序。&lt;/li&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://www.mingw-w64.org/&quot; target=&quot;_blank&quot;&gt;MinGW-w64 官网&lt;/a&gt;，进入其&lt;a href=&quot;https://www.mingw-w64.org/downloads/&quot; target=&quot;_blank&quot;&gt;下载页面&lt;/a&gt;，选择合适的 MinGW-w64 发行包。&lt;/li&gt;
&lt;li&gt;MinGW-w64 的下载页面列出了多个发行包及相关工具：&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-11125fa0-598e5e491cc2e43fd2b008111e8cb92e-1789999682807-1-d07c7a.png&quot; alt=&quot;img&quot; /&gt;&lt;figcaption&gt;img&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;本文采用 MinGW-w64。单击图中红框标出的“SourceForge”超链接，即可进入 SourceForge 上的 MinGW-w64 下载页面。&lt;/li&gt;
&lt;li&gt;SourceForge 下载地址：&lt;a href=&quot;https://sourceforge.net/projects/mingw-w64/files/&quot; target=&quot;_blank&quot;&gt;MinGW-w64 Files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub 上也提供了编译完成的二进制包：&lt;a href=&quot;https://github.com/niXman/mingw-builds-binaries/releases&quot; target=&quot;_blank&quot;&gt;MinGW-Builds&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-948360d2-5c80d450eb6bd2930f011df68fe935c3-1789999693704-4-f9f974.png&quot; alt=&quot;img&quot; /&gt;&lt;figcaption&gt;img&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;进入下载页面后，可以根据 Windows 系统架构选择对应的安装包：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-f3ff59e5-6576bba5be6352d1268c7769704a537e44-3066be.png&quot; alt=&quot;img&quot; /&gt;&lt;figcaption&gt;img&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;使用在线安装程序时，可能会遇到网络连接错误，因此也可以直接下载 SJLJ 版本的压缩包（提供 32 位和 64 位版本）：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;[下载 32 位 sjlj](&lt;a href=&quot;https://sourceforge.net/projects/mingw-w64/files/Toolchains&quot; target=&quot;_blank&quot;&gt;https://sourceforge.net/projects/mingw-w64/files/Toolchains&lt;/a&gt; targetting Win32/Personal Builds/mingw-builds/8.1.0/threads-posix/sjlj/)&lt;/li&gt;
&lt;li&gt;[下载 64 位 sjlj](&lt;a href=&quot;https://sourceforge.net/projects/mingw-w64/files/Toolchains&quot; target=&quot;_blank&quot;&gt;https://sourceforge.net/projects/mingw-w64/files/Toolchains&lt;/a&gt; targetting Win64/Personal Builds/mingw-builds/8.1.0/threads-posix/sjlj/)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;下载完成后，将压缩包解压到合适的位置。在其 &lt;code&gt;bin&lt;/code&gt; 目录中可以找到 &lt;code&gt;gcc.exe&lt;/code&gt;、&lt;code&gt;g++.exe&lt;/code&gt; 等程序：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-b5387ce9-0c7bc6a0115ffa879f01885c9bbe6e75-1789999736200-9-a51be2.png&quot; alt=&quot;img&quot; /&gt;&lt;figcaption&gt;img&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;安装 MinGW-w64 时，需要确保所选工具包中包含 GCC、G++、Binutils 和运行库等基本组件。&lt;/li&gt;
&lt;li&gt;将 MinGW-w64 安装目录下的 &lt;code&gt;bin&lt;/code&gt; 子目录添加到 &lt;strong&gt;Path&lt;/strong&gt; 环境变量中。完成配置后，即可在命令行中直接调用这些工具。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-17214cea-c3452d2b6a990b107498381ccfef5bd4-1789999750065-12-2f8eaa.png&quot; alt=&quot;img&quot; /&gt;&lt;figcaption&gt;img&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;安装并配置完成后，可以在 Windows 命令行中运行 &lt;code&gt;gcc&lt;/code&gt;、&lt;code&gt;g++&lt;/code&gt;、&lt;code&gt;ar&lt;/code&gt;、&lt;code&gt;ranlib&lt;/code&gt;、&lt;code&gt;dlltool&lt;/code&gt; 等 GNU 工具。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】安装 VS Code&lt;a href=&quot;#2安装-vs-code&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;（1）下载安装包&lt;a href=&quot;#1下载安装包&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;从 &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;VS Code 官网&lt;/a&gt;下载安装程序。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-644cd4b0-image-20260921220124456-fd98f2.png&quot; alt=&quot;image-20260921220124456&quot; /&gt;&lt;figcaption&gt;image-20260921220124456&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（2）安装&lt;a href=&quot;#2安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;双击下载的安装程序，开始安装。图中使用的安装包名称为 &lt;code&gt;VSCodeUserSetup-x64-1.83.1.exe&lt;/code&gt;；实际文件名会随版本更新而变化。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-3bc8e7f9-image-20260921220218339-46e29c.png&quot; alt=&quot;image-20260921220218339&quot; /&gt;&lt;figcaption&gt;image-20260921220218339&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;选择安装位置，然后单击“下一步”。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-5db8d5d0-image-20260921220229486-74f4d3.png&quot; alt=&quot;image-20260921220229486&quot; /&gt;&lt;figcaption&gt;image-20260921220229486&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;选择开始菜单文件夹。这里采用默认选项，直接单击“下一步”。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-ab9a6e91-image-20260921220241479-60fd4b.png&quot; alt=&quot;image-20260921220241479&quot; /&gt;&lt;figcaption&gt;image-20260921220241479&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;选择附加任务。为了方便后续使用，这里勾选图中所示的全部选项。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-4be52887-image-20260921220258127-5e40cb.png&quot; alt=&quot;image-20260921220258127&quot; /&gt;&lt;figcaption&gt;image-20260921220258127&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;确认安装设置后，单击“安装”。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-dfa0a193-image-20260921220308116-8b6316.png&quot; alt=&quot;image-20260921220308116&quot; /&gt;&lt;figcaption&gt;image-20260921220308116&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;安装完成后，勾选“启动 Visual Studio Code”，然后单击“完成”。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-bbbfef00-image-20260921220320533-b275c0.png&quot; alt=&quot;image-20260921220320533&quot; /&gt;&lt;figcaption&gt;image-20260921220320533&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（3）选择颜色主题风格&lt;a href=&quot;#3选择颜色主题风格&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;VS Code 首次启动时会打开欢迎页面，可以在其中选择颜色主题。默认主题为深色模式，本文选择浅色模式；后续也可以在设置中随时更换主题。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-639f01d2-image-20260921220358709-b42189.png&quot; alt=&quot;image-20260921220358709&quot; /&gt;&lt;figcaption&gt;image-20260921220358709&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（4）配置 VS Code&lt;a href=&quot;#4配置-vs-code&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;[1] 安装中文语言包&lt;a href=&quot;#1-安装中文语言包&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;单击左侧活动栏中的“扩展”按钮，在搜索框中输入 &lt;code&gt;Chinese&lt;/code&gt;，找到并安装 &lt;strong&gt;Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-22090bd1-image-20260921220449049-a0b61b.png&quot; alt=&quot;image-20260921220449049&quot; /&gt;&lt;figcaption&gt;image-20260921220449049&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;语言包安装完成后需要重启 VS Code。正常情况下，界面会显示重启按钮；如果没有显示，也可以手动关闭并重新启动 VS Code。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-3151e989-image-20260921220501215-5e5970.png&quot; alt=&quot;image-20260921220501215&quot; /&gt;&lt;figcaption&gt;image-20260921220501215&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;[2] 安装 C 语言扩展&lt;a href=&quot;#2-安装-c-语言扩展&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;单击左侧活动栏中的“扩展”按钮，搜索 &lt;code&gt;C/C++&lt;/code&gt;，选择并安装 &lt;strong&gt;C/C++ Extension Pack&lt;/strong&gt;。该扩展包集成了 C/C++ 开发中常用的多个扩展。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-49-34-94dbf436-image-20260921220543673-d8fbce.png&quot; alt=&quot;image-20260921220543673&quot; /&gt;&lt;figcaption&gt;image-20260921220543673&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】验证安装&lt;a href=&quot;#3验证安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;完全关闭并重新打开 VS Code，然后新建一个 PowerShell 终端，依次执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gcc &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;version&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gdb &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;version&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Get-Command&lt;/span&gt;&lt;span&gt; gcc&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gcc &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;dumpmachine&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果安装正确：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gcc --version&lt;/code&gt; 会显示 GCC 版本信息；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gdb --version&lt;/code&gt; 会显示 GDB 版本信息；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Get-Command gcc&lt;/code&gt; 会显示 &lt;code&gt;gcc.exe&lt;/code&gt; 的实际路径；&lt;/li&gt;
&lt;li&gt;对于 64 位 MinGW-w64，&lt;code&gt;gcc -dumpmachine&lt;/code&gt; 的结果通常包含 &lt;code&gt;x86_64-w64-mingw32&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】编写并运行第一个 C 程序&lt;a href=&quot;#四编写并运行第一个-c-程序&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;【1】创建项目目录&lt;a href=&quot;#1创建项目目录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;建议为每个项目单独建立文件夹。例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;C:\Code\c-study\hello&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;使用 VS Code 打开该文件夹，然后新建 &lt;code&gt;hello.c&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Hello, C!&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】编译程序&lt;a href=&quot;#2编译程序&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 VS Code 中选择“终端 → 新建终端”，执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gcc &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;std&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;c17 &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;Wall &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;Wextra &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;Wpedantic &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;g hello.c &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;o &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;各参数含义：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-std=c17&lt;/code&gt;&lt;/td&gt;&lt;td&gt;按 C17 标准编译&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-Wall -Wextra -Wpedantic&lt;/code&gt;&lt;/td&gt;&lt;td&gt;开启常用警告，帮助发现潜在问题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-g&lt;/code&gt;&lt;/td&gt;&lt;td&gt;写入调试信息，供 GDB 使用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;hello.c&lt;/code&gt;&lt;/td&gt;&lt;td&gt;输入的 C 源文件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-o hello.exe&lt;/code&gt;&lt;/td&gt;&lt;td&gt;指定生成的可执行文件名&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;blockquote&gt;&lt;p&gt;编译成功时，GCC 通常不会输出任何信息。没有消息往往表示没有发现错误。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】运行程序&lt;a href=&quot;#3运行程序&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 PowerShell 中执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.\&lt;/span&gt;&lt;span&gt;hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预期输出：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Hello, C!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;PowerShell 默认不会直接从当前目录查找程序，因此需要使用 &lt;code&gt;.&lt;/code&gt; 表示当前目录，即写成 &lt;code&gt;.\hello.exe&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【五】Windows 上的其他方案&lt;a href=&quot;#五windows-上的其他方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;【1】Visual Studio + MSVC&lt;a href=&quot;#1visual-studio--msvc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果希望使用完整 IDE，可以安装 &lt;a href=&quot;https://visualstudio.microsoft.com/vs/community/&quot; target=&quot;_blank&quot;&gt;Visual Studio Community&lt;/a&gt;。在安装器中选择：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;使用 C++ 的桌面开发（Desktop development with C++）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;虽然工作负载名称包含“C++”，其中的 MSVC 编译器同样可以编译 C 程序。在 “Developer PowerShell for VS” 中可以这样编译：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;cl &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;W4 &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;Zi hello.c&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.\&lt;/span&gt;&lt;span&gt;hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;MSVC 与 GCC 的命令行参数不同，不能直接照搬 GCC 的参数。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】WSL（适合学习 Linux 开发）&lt;a href=&quot;#2wsl适合学习-linux-开发&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;WSL 可以在 Windows 中提供 Linux 环境。管理员 PowerShell 中执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;wsl &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;进入 Ubuntu 后安装工具链：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;build-essential&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gdb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;WSL 中生成的是 Linux 可执行文件，应在 WSL 内使用 &lt;code&gt;./hello&lt;/code&gt; 运行，而不是在 Windows 中运行。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【六】Linux 环境安装&lt;a href=&quot;#六linux-环境安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;先检查编译器是否已经安装：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;gcc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--version&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果未安装，可以根据发行版执行相应命令。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;【1】Debian / Ubuntu&lt;a href=&quot;#1debian--ubuntu&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;build-essential&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gdb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】Fedora&lt;a href=&quot;#2fedora&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dnf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gcc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gdb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;make&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】Arch Linux&lt;a href=&quot;#3arch-linux&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;base-devel&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gdb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;编译并运行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;gcc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-std=c17&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Wall&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Wextra&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Wpedantic&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hello.c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-o&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hello&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;./hello&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【七】macOS 环境安装&lt;a href=&quot;#七macos-环境安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;macOS 推荐安装 Apple Command Line Tools：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xcode-select&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--install&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;安装后验证：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--version&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;clang&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--version&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;macOS 默认提供的是 &lt;strong&gt;Apple Clang&lt;/strong&gt;。系统中的 &lt;code&gt;gcc&lt;/code&gt; 命令通常也会调用 Clang，并不代表安装了 GNU GCC。&lt;/p&gt;&lt;p&gt;编译并运行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-std=c17&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Wall&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Wextra&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Wpedantic&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hello.c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-o&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hello&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;./hello&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【八】常见问题排查&lt;a href=&quot;#八常见问题排查&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;【1】提示“无法识别 gcc”或“gcc 不是内部或外部命令”&lt;a href=&quot;#1提示无法识别-gcc或gcc-不是内部或外部命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;可能原因：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;工具链尚未安装；&lt;/li&gt;
&lt;li&gt;MinGW-w64 安装目录下的 &lt;code&gt;bin&lt;/code&gt; 文件夹没有加入 &lt;code&gt;Path&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;修改 &lt;code&gt;Path&lt;/code&gt; 后没有重启终端或 VS Code；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Path&lt;/code&gt; 中存在其他旧版 GCC，导致工具冲突。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;在 PowerShell 中检查：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Get-Command&lt;/span&gt;&lt;span&gt;&lt;span&gt; gcc &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;All&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】安装了 VS Code 扩展却不能编译&lt;a href=&quot;#2安装了-vs-code-扩展却不能编译&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C/C++ 扩展只提供代码编辑、代码提示和调试集成，不包含编译器。按照本文的技术路线，还需要单独安装 MinGW-w64 工具链。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】出现 &lt;code&gt;No such file or directory&lt;/code&gt;&lt;a href=&quot;#3出现-no-such-file-or-directory&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先确认终端所在目录和文件名：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Get-Location&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Get-ChildItem&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后确认当前目录中确实存在 &lt;code&gt;hello.c&lt;/code&gt;。文件扩展名也可能被 Windows 隐藏，应避免将文件误命名为 &lt;code&gt;hello.c.txt&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【4】双击程序后窗口一闪而过&lt;a href=&quot;#4双击程序后窗口一闪而过&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;不要通过双击运行控制台程序。应在 PowerShell、Windows Terminal 或 VS Code 终端中执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.\&lt;/span&gt;&lt;span&gt;hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【5】中文输出乱码&lt;a href=&quot;#5中文输出乱码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;初学阶段可先使用英文路径、英文文件名和英文输出，减少编码问题。需要输出中文时，应确保源文件、终端和程序使用兼容的字符编码；在现代 Windows Terminal 中通常建议统一使用 UTF-8。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【6】&lt;code&gt;gcc&lt;/code&gt; 和 &lt;code&gt;g++&lt;/code&gt; 有什么区别&lt;a href=&quot;#6gcc-和-g-有什么区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gcc&lt;/code&gt;：用于编译 C 程序；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;g++&lt;/code&gt;：用于编译 C++ 程序，并自动链接 C++ 标准库。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;学习 C 语言时，源文件应使用 &lt;code&gt;.c&lt;/code&gt; 扩展名，并使用 &lt;code&gt;gcc&lt;/code&gt; 编译。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【九】推荐的学习配置&lt;a href=&quot;#九推荐的学习配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;对于 Windows 初学者，建议统一使用以下组合：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;项目&lt;/th&gt;&lt;th&gt;推荐选择&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;编辑器&lt;/td&gt;&lt;td&gt;Visual Studio Code&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;编辑扩展&lt;/td&gt;&lt;td&gt;Microsoft C/C++&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;工具链&lt;/td&gt;&lt;td&gt;MinGW-w64 GCC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;调试器&lt;/td&gt;&lt;td&gt;GDB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;语言标准&lt;/td&gt;&lt;td&gt;C17（兼容性较好）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;编译警告&lt;/td&gt;&lt;td&gt;&lt;code&gt;-Wall -Wextra -Wpedantic&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;C23 已正式发布，但不同编译器对其特性的支持程度不一致。基础学习阶段使用 C17 更稳定；学习 C23 新特性时，再根据编译器版本选择 &lt;code&gt;-std=c23&lt;/code&gt; 或旧版 GCC 使用的 &lt;code&gt;-std=c2x&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【十】延伸阅读&lt;a href=&quot;#十延伸阅读&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://code.visualstudio.com/docs/languages/cpp&quot; target=&quot;_blank&quot;&gt;VS Code：C++ programming with Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mingw-w64.org/&quot; target=&quot;_blank&quot;&gt;MinGW-w64 官方网站&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gcc.gnu.org/onlinedocs/&quot; target=&quot;_blank&quot;&gt;GCC 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://clang.llvm.org/docs/&quot; target=&quot;_blank&quot;&gt;Clang 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/cpp/&quot; target=&quot;_blank&quot;&gt;Microsoft C/C++ 文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言初识：程序运行机制与基本结构</title><link>https://firefly.cuteleaf.cn/posts/language/c/10c%E8%AF%AD%E8%A8%80%E4%BB%8B%E7%BB%8D/30c%E8%AF%AD%E8%A8%80%E5%88%9D%E8%AF%86/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/10c%E8%AF%AD%E8%A8%80%E4%BB%8B%E7%BB%8D/30c%E8%AF%AD%E8%A8%80%E5%88%9D%E8%AF%86/</guid><description>认识 C 程序从源代码到运行的完整流程，以及基础语法和程序的基本结构。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】C 程序的运行机制&lt;a href=&quot;#一c-程序的运行机制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;从源代码到程序运行，通常会经历编写、预处理、编译、汇编、链接和运行等阶段。开发者平时执行一条编译命令时，这些阶段大多由编译器工具链自动完成，因此中间文件不一定会被保留下来。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/19-50-04-e1f7e1b7-u%3D1362887596%2C68938054-fm%3D253-app%3D138-f%3DJPEG-5d4f0e.jpeg&quot; alt=&quot;img&quot; /&gt;&lt;figcaption&gt;img&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;图中展示的是 Windows 下的 MSVC 工具链：&lt;code&gt;cl.exe&lt;/code&gt; 负责处理和编译源文件，&lt;code&gt;link.exe&lt;/code&gt; 负责链接，目标文件扩展名为 &lt;code&gt;.obj&lt;/code&gt;。本文安装的是 MinGW-w64 GCC 工具链，目标文件通常使用 &lt;code&gt;.o&lt;/code&gt; 扩展名。二者生成的文件名称和使用的命令有所不同，但整体处理过程基本一致。&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1. 编写代码：使用编辑器编写 C 源代码，并保存为 xx.c 文件。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2. 预处理：处理 #include、#define、条件编译等预处理指令，并处理源代码中的注释，通常得到 xx.i 文件。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;3. 编译：对预处理后的代码进行词法分析、语法分析、语义分析和优化，再转换为汇编代码，通常得到 xx.s 文件。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;4. 汇编：汇编器将汇编代码转换成机器指令，生成可重定位目标文件；GCC 通常生成 xx.o，MSVC 通常生成 xx.obj。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;5. 链接：链接器把一个或多个目标文件、启动代码和所需的库组合起来，解析函数与变量的引用，最终生成可执行文件。Windows 下通常为 xx.exe。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;6. 运行：操作系统加载可执行文件及其依赖的动态库，完成运行环境初始化后开始执行程序，并得到运行结果。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这里需要区分“编译”的两种常见含义：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;广义的编译&lt;/strong&gt;：泛指从源文件生成可执行文件的整个构建过程，包括预处理、狭义编译、汇编和链接。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;狭义的编译&lt;/strong&gt;：特指把预处理后的 C 代码转换为汇编代码的阶段。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;目标文件虽然已经包含机器指令，但通常还存在尚未确定地址的符号引用，因此不能直接运行。例如，程序调用 &lt;code&gt;printf&lt;/code&gt; 时，目标文件只记录了对该函数的引用；链接器还需要从相应的库中找到它，并建立正确的关联。&lt;/p&gt;&lt;p&gt;使用 MinGW-w64 GCC 时，可以通过下面的命令分别观察各个阶段：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 预处理：hello.c -&amp;gt; hello.i&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gcc &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;E hello.c &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;o hello.i&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 编译：hello.i -&amp;gt; hello.s&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gcc &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;S hello.i &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;o hello.s&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 3. 汇编：hello.s -&amp;gt; hello.o&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gcc &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;c hello.s &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;o hello.o&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 4. 链接：hello.o -&amp;gt; hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gcc hello.o &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;o &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 5. 运行（PowerShell）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.\&lt;/span&gt;&lt;span&gt;hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;实际开发时通常不需要手动执行每个阶段。一条命令即可让 GCC 依次完成预处理、编译、汇编和链接：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;gcc hello.c &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;o &lt;/span&gt;&lt;/span&gt;&lt;span&gt;hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.\&lt;/span&gt;&lt;span&gt;hello.exe&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;gcc&lt;/code&gt; 不只是狭义上的编译器命令，它还充当工具链的驱动程序，会根据参数自动调用预处理器、编译器、汇编器和链接器。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】C 基础语法&lt;a href=&quot;#二c-基础语法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;C 语言是一种通用编程语言，广泛应用于系统编程、嵌入式开发和高性能计算等领域。&lt;/p&gt;&lt;p&gt;C 语言具有高效、灵活、可移植性强等特点，是许多其他编程语言（如 C++、Java、Go）的基础，至今仍是操作系统、驱动程序和底层库开发的主流选择。&lt;/p&gt;&lt;p&gt;在 C 语言中，令牌（Token）是程序的基本组成单位。编译器通过词法分析，将源代码识别为一个个具有特定含义的令牌。了解令牌的类别，有助于看懂程序的语法结构。&lt;/p&gt;&lt;p&gt;C 语言的令牌主要包括以下几种类型：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;关键字（Keywords）&lt;/strong&gt;：语言预留的具有特殊含义的单词，如 &lt;code&gt;int&lt;/code&gt;、&lt;code&gt;if&lt;/code&gt;、&lt;code&gt;return&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标识符（Identifiers）&lt;/strong&gt;：程序员自定义的名称，用于变量、函数、数组等。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;常量（Constants）&lt;/strong&gt;：程序中固定不变的值，如整数 &lt;code&gt;42&lt;/code&gt;、浮点数 &lt;code&gt;3.14&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字符串字面量（String Literals）&lt;/strong&gt;：由双引号括起来的字符序列，如 &lt;code&gt;&quot;Hello&quot;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运算符（Operators）&lt;/strong&gt;：用于执行运算的符号，如 &lt;code&gt;+&lt;/code&gt;、&lt;code&gt;==&lt;/code&gt;、&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分隔符（Separators）&lt;/strong&gt;：用于分隔语句和代码块的符号，如 &lt;code&gt;;&lt;/code&gt;、&lt;code&gt;{}&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;阅读代码时，可以先找出标识符、字面量和运算符，再观察分号、括号与花括号如何组织语句。C 语言区分大小写，例如 &lt;code&gt;count&lt;/code&gt; 和 &lt;code&gt;Count&lt;/code&gt; 是两个不同的标识符。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】C 程序的基本结构&lt;a href=&quot;#三c-程序的基本结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;【1】简单的 C 语言程序&lt;a href=&quot;#1简单的-c-语言程序&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先从一个输出文字的 C 程序开始，观察头文件、&lt;code&gt;main&lt;/code&gt; 函数与 &lt;code&gt;return&lt;/code&gt; 语句的位置：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Hello, World!&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;上面的代码可以从以下几个组成部分理解；变量声明和其他函数定义则会出现在后续示例中：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;预处理器指令&lt;/strong&gt;：如 &lt;code&gt;#include&lt;/code&gt; 和 &lt;code&gt;#define&lt;/code&gt;，在编译前由预处理器处理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主函数&lt;/strong&gt;：每个 C 程序都有且只有一个 &lt;code&gt;main()&lt;/code&gt; 函数，是程序的执行入口。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;变量声明&lt;/strong&gt;：声明程序中使用的变量，C89 要求声明必须在代码块最开头。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;函数定义&lt;/strong&gt;：定义程序中使用的函数，描述函数的具体实现逻辑。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】复杂一点的 C 程序结构&lt;a href=&quot;#2复杂一点的-c-程序结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;再看一个稍完整的 C 程序：它从标准输入读取两个整数，调用 &lt;code&gt;add&lt;/code&gt; 函数计算结果，并输出求和结果。下面先认识整体结构，各知识点会在后续章节展开说明。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;// 头文件包含&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;PI&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.14159&lt;/span&gt;&lt;span&gt;    // 宏定义&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 函数声明&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;span&gt;         // 主函数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 变量声明&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; num1, num2, sum;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 用户输入&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Enter two integers: &quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;scanf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;num1, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;num2) &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Invalid input.&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 函数调用&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;sum &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt;(num1, num2);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 输出结果&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Sum: &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, sum);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;        // 返回 0 表示程序成功执行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 函数定义&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; b;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;scanf&lt;/code&gt; 会返回成功读取并转换的数据项数量。本例需要读取两个整数，因此返回值应为 &lt;code&gt;2&lt;/code&gt;；如果返回值不等于 &lt;code&gt;2&lt;/code&gt;，程序会提示输入无效并提前结束，从而避免继续使用未正确赋值的变量。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;头文件包含&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;头文件通常在程序开头通过 &lt;code&gt;#include&lt;/code&gt; 指令引入。例如，&lt;code&gt;&amp;lt;stdio.h&amp;gt;&lt;/code&gt; 声明了标准输入输出函数，&lt;code&gt;&amp;lt;stdlib.h&amp;gt;&lt;/code&gt; 提供了常用的通用工具声明。包含相应头文件后，编译器才能获得所用函数和宏的相关信息。&lt;/li&gt;
&lt;li&gt;标准库头文件通常使用尖括号 &lt;code&gt;&amp;lt; &amp;gt;&lt;/code&gt;，项目自定义头文件通常使用双引号 &lt;code&gt;&quot; &quot;&lt;/code&gt;；两种写法的头文件搜索方式不同。&lt;/li&gt;
&lt;li&gt;示例：&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/code&gt;（标准库头文件）、&lt;code&gt;#include &quot;myheader.h&quot;&lt;/code&gt;（自定义头文件）。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;宏定义&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;宏通过 &lt;code&gt;#define&lt;/code&gt; 指令定义，可表示符号常量或代码片段。预处理器会在编译前展开宏；宏常用于定义常量或简短的可复用表达式。&lt;/li&gt;
&lt;li&gt;宏本身不进行类型检查，使用时需谨慎；需要类型约束时，可以考虑使用 &lt;code&gt;const&lt;/code&gt; 变量。&lt;/li&gt;
&lt;li&gt;示例：&lt;code&gt;#define PI 3.14159&lt;/code&gt;、&lt;code&gt;#define MAX(a, b) ((a) &amp;gt; (b) ? (a) : (b))&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;函数声明&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;函数声明（也称函数原型）提供返回类型、函数名和参数信息，使编译器能在调用处检查参数与返回类型。本例在调用 &lt;code&gt;add&lt;/code&gt; 之前先写出声明，再在 &lt;code&gt;main&lt;/code&gt; 之后给出定义。&lt;/li&gt;
&lt;li&gt;多个源文件需要调用同一个函数时，可以将其声明放在头文件中共享。&lt;/li&gt;
&lt;li&gt;示例：&lt;code&gt;int add(int a, int b);&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;主函数&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;main()&lt;/code&gt; 函数是 C 程序的入口点，每个 C 程序都必须包含一个 &lt;code&gt;main()&lt;/code&gt; 函数。程序从 &lt;code&gt;main()&lt;/code&gt; 开始执行，返回值通常为 &lt;code&gt;0&lt;/code&gt; 表示程序成功执行，非零值表示出现了错误。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main()&lt;/code&gt; 函数也可以接收命令行参数：&lt;code&gt;int main(int argc, char *argv[])&lt;/code&gt;，其中 &lt;code&gt;argc&lt;/code&gt; 是参数个数，&lt;code&gt;argv&lt;/code&gt; 是参数字符串数组。&lt;/li&gt;
&lt;li&gt;示例：&lt;code&gt;int main() { ... }&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;变量声明&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;在 C 程序中，变量使用前需要声明其类型。变量既可以在函数内部声明为局部变量，也可以在函数外部声明为全局变量。&lt;/li&gt;
&lt;li&gt;声明变量时可同时进行初始化，未初始化的局部变量包含不确定值（垃圾值），而全局变量和静态变量会被自动初始化为 &lt;code&gt;0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;示例：&lt;code&gt;int count = 0;&lt;/code&gt;、&lt;code&gt;float price = 9.99;&lt;/code&gt;、&lt;code&gt;char grade = &apos;A&apos;;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;语句和表达式&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;语句用于组织程序中的操作，例如函数调用、赋值或控制流。表达式则可以由变量、运算符和常量等构成，并参与求值。&lt;/li&gt;
&lt;li&gt;C 语言中，赋值本身也是一个表达式，具有值（即被赋的值），因此可以写出 &lt;code&gt;a = b = c = 0;&lt;/code&gt; 这样的链式赋值。&lt;/li&gt;
&lt;li&gt;示例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Enter two integers: &quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sum &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;num1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; num2&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;控制流语句&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;控制流语句决定程序的执行顺序，包括条件判断（&lt;code&gt;if&lt;/code&gt;/&lt;code&gt;else&lt;/code&gt;、&lt;code&gt;switch&lt;/code&gt;）、循环（&lt;code&gt;for&lt;/code&gt;、&lt;code&gt;while&lt;/code&gt;、&lt;code&gt;do-while&lt;/code&gt;），以及 &lt;code&gt;break&lt;/code&gt;、&lt;code&gt;continue&lt;/code&gt;、&lt;code&gt;goto&lt;/code&gt; 和 &lt;code&gt;return&lt;/code&gt; 等跳转语句。&lt;/li&gt;
&lt;li&gt;合理使用控制流语句有助于让程序逻辑更清晰；为了保持代码可读性，应避免滥用 &lt;code&gt;goto&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;示例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (num1 &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; num2) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;num1 is greater than num2&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;函数定义&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;函数定义包含完整的函数体，描述函数的具体实现。一个函数通常由返回类型、函数名、参数列表和函数体组成。设计函数时，可以尽量让每个函数专注于一项明确的任务。&lt;/li&gt;
&lt;li&gt;C 语言的函数不支持重载，每个函数名在同一作用域中必须唯一。函数可以递归调用自身。&lt;/li&gt;
&lt;li&gt;示例：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; b;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;返回语句&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;return&lt;/code&gt; 语句用于终止函数的执行，并将控制权连同返回值一起交还给调用者。&lt;code&gt;void&lt;/code&gt; 类型的函数可以使用不带值的 &lt;code&gt;return;&lt;/code&gt; 提前退出，也可以省略 &lt;code&gt;return&lt;/code&gt; 语句。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main()&lt;/code&gt; 函数的返回值会传递给操作系统，&lt;code&gt;0&lt;/code&gt; 通常表示成功，可使用标准宏 &lt;code&gt;EXIT_SUCCESS&lt;/code&gt; 和 &lt;code&gt;EXIT_FAILURE&lt;/code&gt;（定义在 &lt;code&gt;&amp;lt;stdlib.h&amp;gt;&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;示例：&lt;code&gt;return 0;&lt;/code&gt;、&lt;code&gt;return EXIT_SUCCESS;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言基础：注释、关键字、变量与数据类型</title><link>https://firefly.cuteleaf.cn/posts/language/c/10c%E8%AF%AD%E8%A8%80%E4%BB%8B%E7%BB%8D/40c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/10c%E8%AF%AD%E8%A8%80%E4%BB%8B%E7%BB%8D/40c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/</guid><description>学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】注释&lt;a href=&quot;#一注释&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;注释用于补充代码的设计意图、使用条件和注意事项，不参与程序运行。C 语言支持 &lt;code&gt;//&lt;/code&gt; 单行注释和 &lt;code&gt;/* ... */&lt;/code&gt; 块注释，其中 &lt;code&gt;//&lt;/code&gt; 从 C99 开始被正式纳入标准。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;【1】单行注释&lt;a href=&quot;#1单行注释&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 单行注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;单行注释以 &lt;code&gt;//&lt;/code&gt; 开始，到当前行末尾结束。它既可以单独占一行，也可以写在代码行末尾。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】多行注释&lt;a href=&quot;#2多行注释&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/* 单行注释 */&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;多行注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;多行注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;多行注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;块注释以 &lt;code&gt;/*&lt;/code&gt; 开始、以 &lt;code&gt;*/&lt;/code&gt; 结束，可以写成一行或跨越多行，适合补充较长的说明。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 这是单行注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;这是多行注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;它可以跨越多行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 打印一条消息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Hello, World!&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】文档注释（文本注释）&lt;a href=&quot;#3文档注释文本注释&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;文档注释本质上仍是块注释，C 语言标准并没有单独规定“文档注释”语法。Doxygen 等文档生成工具会识别 &lt;code&gt;/** ... */&lt;/code&gt; 中的特定标记，并据此生成接口文档。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;本质是多行注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;文档注释的功能 : 添加批注&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stddef.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;@brief&lt;/span&gt;&lt;span&gt; 计算字符串的长度&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;@param&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt; 指向以空字符结尾的字符串&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;@return&lt;/span&gt;&lt;span&gt; 字符串的长度&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;size_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;string_length&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;上例只展示函数声明及其文档说明。&lt;code&gt;@brief&lt;/code&gt;、&lt;code&gt;@param&lt;/code&gt; 和 &lt;code&gt;@return&lt;/code&gt; 是 Doxygen 常用标记，不是 C 语言关键字。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【4】注意&lt;a href=&quot;#4注意&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;块注释不能嵌套。例如，&lt;code&gt;/* 外层 /* 内层 */ 外层 */&lt;/code&gt; 会在遇到第一个 &lt;code&gt;*/&lt;/code&gt; 时结束，后续内容可能引发编译错误。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;字符串字面量和字符常量中的 &lt;code&gt;//&lt;/code&gt;、&lt;code&gt;/*&lt;/code&gt;、&lt;code&gt;*/&lt;/code&gt; 只是普通字符，不会被识别为注释。例如，&lt;code&gt;&quot;https://example.com&quot;&lt;/code&gt; 中的 &lt;code&gt;//&lt;/code&gt; 不会开始一段注释。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注释是写给人看的，应简洁明了，重点解释“为什么这样做”、约束条件和容易忽略的问题，而不是机械重复代码已经表达的内容。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;良好的注释习惯是专业编程的重要组成部分，有助于代码维护和团队协作。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】关键字&lt;a href=&quot;#二关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;关键字是由 C 语言标准预先赋予特殊含义的单词，不能用作变量名、函数名或其他标识符。不同 C 标准引入的关键字有所不同，下表首先列出 C90 的 32 个经典关键字。&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;关键字&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;auto&lt;/td&gt;&lt;td&gt;声明自动变量（局部变量默认存储类型，现代 C 中很少显式使用）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;break&lt;/td&gt;&lt;td&gt;跳出当前循环或 switch 语句&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;case&lt;/td&gt;&lt;td&gt;switch 语句中的分支标签&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;char&lt;/td&gt;&lt;td&gt;声明字符类型；&lt;code&gt;sizeof(char)&lt;/code&gt; 始终等于 1，但 1 字节不一定等于 8 位&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;const&lt;/td&gt;&lt;td&gt;添加只读限定，表示不能通过该左值修改对象&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;continue&lt;/td&gt;&lt;td&gt;结束本次循环迭代，直接开始下一轮循环&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;default&lt;/td&gt;&lt;td&gt;switch 语句中的默认分支（所有 case 均不匹配时执行）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;do&lt;/td&gt;&lt;td&gt;do-while 循环的循环体，循环体至少执行一次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;double&lt;/td&gt;&lt;td&gt;声明双精度浮点型变量或函数返回值类型（通常占 8 字节）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;else&lt;/td&gt;&lt;td&gt;条件语句的否定分支（与 if 连用）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;enum&lt;/td&gt;&lt;td&gt;声明枚举类型，用于定义一组命名的整型常量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;extern&lt;/td&gt;&lt;td&gt;声明变量或函数在其它文件或本文件的其他位置定义&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;float&lt;/td&gt;&lt;td&gt;声明单精度浮点型变量或函数返回值类型（通常占 4 字节）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;for&lt;/td&gt;&lt;td&gt;for 循环语句，适合已知循环次数的场景&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;goto&lt;/td&gt;&lt;td&gt;无条件跳转语句（应谨慎使用，可能降低代码可读性）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;if&lt;/td&gt;&lt;td&gt;条件判断语句&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;int&lt;/td&gt;&lt;td&gt;声明整型变量或函数返回值类型（通常占 4 字节）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;long&lt;/td&gt;&lt;td&gt;声明长整型变量或函数返回值类型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;register&lt;/td&gt;&lt;td&gt;建议编译器将变量存入寄存器以提高访问速度（现代编译器通常自动优化）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;return&lt;/td&gt;&lt;td&gt;函数返回语句，可带返回值，也可不带（void 函数）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;short&lt;/td&gt;&lt;td&gt;声明短整型变量或函数返回值类型（通常占 2 字节）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;signed&lt;/td&gt;&lt;td&gt;声明有符号类型变量（可表示负数，整型默认有符号）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sizeof&lt;/td&gt;&lt;td&gt;获取类型或表达式结果类型所占的字节数；涉及 VLA 时可能在运行期求值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;static&lt;/td&gt;&lt;td&gt;使局部变量具有静态存储期，或使文件作用域名称具有内部链接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;struct&lt;/td&gt;&lt;td&gt;声明结构体类型，将不同类型的数据组合成一个整体&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;switch&lt;/td&gt;&lt;td&gt;多分支选择语句，根据表达式的值跳转到对应 case&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;typedef&lt;/td&gt;&lt;td&gt;为已有数据类型定义新的别名，提高代码可读性&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;unsigned&lt;/td&gt;&lt;td&gt;声明无符号类型变量（只能表示非负数，范围更大）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;union&lt;/td&gt;&lt;td&gt;声明共用体类型，所有成员共享同一块内存空间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;void&lt;/td&gt;&lt;td&gt;表示无值类型；可声明无返回值函数、无参数函数或通用对象指针 &lt;code&gt;void *&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;volatile&lt;/td&gt;&lt;td&gt;表示对象可能以编译器无法预知的方式变化，要求相关访问按抽象机规则发生&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;while&lt;/td&gt;&lt;td&gt;while 循环语句，适合循环次数未知但终止条件明确的场景&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;section&gt;&lt;h2&gt;【1】C99 新增关键字&lt;a href=&quot;#1c99-新增关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;code&gt;_Bool&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;_Complex&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;_Imaginary&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;inline&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;restrict&lt;/code&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;C99 新增的关键字主要用于：布尔类型支持（&lt;code&gt;_Bool&lt;/code&gt;）、复数支持（&lt;code&gt;_Complex&lt;/code&gt;、&lt;code&gt;_Imaginary&lt;/code&gt;）、内联函数优化（&lt;code&gt;inline&lt;/code&gt;）、指针别名限制优化（&lt;code&gt;restrict&lt;/code&gt;）。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;_Imaginary&lt;/code&gt; 与虚数类型属于实现可选功能，并非所有编译器都提供支持。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】C11 新增关键字&lt;a href=&quot;#2c11-新增关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;code&gt;_Alignas&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;_Alignof&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;_Atomic&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;_Generic&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;_Noreturn&lt;/code&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;_Static_assert&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;_Thread_local&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;C11 新增的关键字主要用于：内存对齐控制（&lt;code&gt;_Alignas&lt;/code&gt;、&lt;code&gt;_Alignof&lt;/code&gt;）、原子操作与多线程支持（&lt;code&gt;_Atomic&lt;/code&gt;、&lt;code&gt;_Thread_local&lt;/code&gt;）、泛型选择（&lt;code&gt;_Generic&lt;/code&gt;）、静态断言（&lt;code&gt;_Static_assert&lt;/code&gt;）和标记无返回值函数（&lt;code&gt;_Noreturn&lt;/code&gt;）。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】C23 新增的常用关键字&lt;a href=&quot;#3c23-新增的常用关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;code&gt;alignas&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;alignof&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;constexpr&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;false&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;nullptr&lt;/code&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;static_assert&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;thread_local&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;typeof&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;typeof_unqual&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;_BitInt&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;C23 为部分以下划线开头的旧写法提供了更自然的拼写，并加入 &lt;code&gt;constexpr&lt;/code&gt;、&lt;code&gt;nullptr&lt;/code&gt;、&lt;code&gt;typeof&lt;/code&gt;、&lt;code&gt;typeof_unqual&lt;/code&gt; 和 &lt;code&gt;_BitInt&lt;/code&gt; 等功能。C23 较新，实际使用前应确认编译器版本及其支持情况。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】标识符&lt;a href=&quot;#三标识符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;标识符是变量、函数、数组、类型等程序实体的名称，通常由程序员定义。对于基础学习，可以将规则概括为：标识符由英文字母、数字和下划线组成，但不能以数字开头。&lt;/p&gt;&lt;p&gt;一个常见的标识符以字母 &lt;code&gt;A-Z&lt;/code&gt;、&lt;code&gt;a-z&lt;/code&gt; 或下划线 &lt;code&gt;_&lt;/code&gt; 开始，后面可以跟零个或多个字母、下划线或数字 &lt;code&gt;0-9&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;C 标识符中不能随意使用 &lt;code&gt;@&lt;/code&gt;、&lt;code&gt;$&lt;/code&gt;、&lt;code&gt;%&lt;/code&gt;、空格和连字符等字符。C 语言&lt;strong&gt;区分大小写&lt;/strong&gt;，因此 &lt;code&gt;Manpower&lt;/code&gt; 和 &lt;code&gt;manpower&lt;/code&gt; 是两个不同的标识符。下面列出几个有效的标识符：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mohd       zara    abc   move_name  a_123&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;myname50   _temp   j     a23b9      retVal&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;以下是一些无效的标识符示例及原因：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2abc&lt;/span&gt;&lt;span&gt;        // 错误：以数字开头&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;my&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;     // 错误：包含连字符 -&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt;       // 错误：与关键字重名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;my name&lt;/span&gt;&lt;span&gt;     // 错误：包含空格&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命名建议：标识符应具有描述性，能清晰表达其用途。常见的命名风格有下划线命名法（&lt;code&gt;my_variable&lt;/code&gt;）和小驼峰命名法（&lt;code&gt;myVariable&lt;/code&gt;），在同一项目中保持一致即可。&lt;/p&gt;&lt;p&gt;以下划线开头的名称还涉及标准保留规则：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;任何位置都不要自定义以双下划线 &lt;code&gt;__&lt;/code&gt; 开头的标识符。&lt;/li&gt;
&lt;li&gt;任何位置都不要自定义以下划线加大写字母开头的标识符，如 &lt;code&gt;_Value&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;文件作用域中，应避免定义任何以下划线开头的标识符。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这些名称通常保留给编译器、标准库和具体实现使用。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】常量&lt;a href=&quot;#四常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;常量可以理解为程序中直接使用的固定值，或在程序中不允许通过某个名称修改的对象。学习时需要区分&lt;strong&gt;字面量&lt;/strong&gt;、&lt;code&gt;const&lt;/code&gt; 限定对象和宏常量，它们虽然都常被称作“常量”，但语言机制并不相同。&lt;/p&gt;&lt;p&gt;常量可以是整型常量、浮点型常量、字符常量、枚举常量等：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; MAX &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;            // const 限定的整型对象&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; PI &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.1415926&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;    // const 限定的浮点型对象&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; NEWLINE &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;      // const 限定的字符型对象&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其中，&lt;code&gt;100&lt;/code&gt;、&lt;code&gt;3.1415926&lt;/code&gt; 和 &lt;code&gt;&apos;\n&apos;&lt;/code&gt; 是字面量；&lt;code&gt;MAX&lt;/code&gt;、&lt;code&gt;PI&lt;/code&gt; 和 &lt;code&gt;NEWLINE&lt;/code&gt; 是具有类型的 &lt;code&gt;const&lt;/code&gt; 限定对象。&lt;code&gt;const&lt;/code&gt; 表示不能通过这些名称修改对应对象，但它并不等同于预处理宏。&lt;/p&gt;&lt;p&gt;字符常量中常用的转义字符包括：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;\n&lt;/code&gt;：换行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;\t&lt;/code&gt;：水平制表符&lt;/li&gt;
&lt;li&gt;&lt;code&gt;\\&lt;/code&gt;：反斜杠&lt;/li&gt;
&lt;li&gt;&lt;code&gt;\&apos;&lt;/code&gt;：单引号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;\0&lt;/code&gt;：空字符，数值为 0，常用作 C 字符串的结束标志&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;与 &lt;code&gt;#define&lt;/code&gt; 宏相比，&lt;code&gt;const&lt;/code&gt; 限定对象具有明确类型，编译器可以进行类型检查，也能在调试器中观察它。二者用途并不完全相同，应根据使用场景选择。&lt;/p&gt;&lt;p&gt;常见的字面量可以分为以下几类：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;                    // 整数字面量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;3.14&lt;/span&gt;&lt;span&gt;                  // 浮点数字面量，默认类型为 double&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;3.14&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;/span&gt;&lt;span&gt;                 // float 类型的浮点数字面量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt;                   // 字符常量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;Hello&quot;&lt;/span&gt;&lt;span&gt;               // 字符串字面量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;C99 引入 &lt;code&gt;_Bool&lt;/code&gt; 类型；包含 &lt;code&gt;&amp;lt;stdbool.h&amp;gt;&lt;/code&gt; 后，在 C17 及更早标准中通常可以使用 &lt;code&gt;bool&lt;/code&gt;、&lt;code&gt;true&lt;/code&gt; 和 &lt;code&gt;false&lt;/code&gt; 宏。C23 将 &lt;code&gt;bool&lt;/code&gt;、&lt;code&gt;true&lt;/code&gt; 和 &lt;code&gt;false&lt;/code&gt; 纳入语言本身。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdbool.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; is_ready &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;C 语言不存在名为 &lt;code&gt;null&lt;/code&gt; 的通用“空常量”。表示空指针时，传统写法使用 &lt;code&gt;NULL&lt;/code&gt; 或整数常量 &lt;code&gt;0&lt;/code&gt;；C23 还引入了 &lt;code&gt;nullptr&lt;/code&gt;。空指针与表示字符串结尾的空字符 &lt;code&gt;&apos;\0&apos;&lt;/code&gt; 是两个不同概念。&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h2&gt;【1】字符串字面量&lt;a href=&quot;#1字符串字面量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;字符串字面量是由双引号括起来的字符序列，用于表示文本数据。&lt;/p&gt;&lt;p&gt;字符串字面量在内存中以字符数组形式表示，末尾会自动添加空字符 &lt;code&gt;\0&lt;/code&gt;（null character），用于标记字符串结束。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; greeting&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Hello, World!&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;  // 编译器自动计算长度（包含 \0）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;以下是关于字符串字面量的几点重要说明：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;“Hello” 在内存中实际占 6 个字节：&lt;code&gt;&apos;H&apos;、&apos;e&apos;、&apos;l&apos;、&apos;l&apos;、&apos;o&apos;、&apos;\0&apos;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修改字符串字面量会产生未定义行为，因此不应通过指针修改它；若需要可修改的字符串，应使用字符数组保存其副本。&lt;/li&gt;
&lt;li&gt;两个相邻的字符串字面量会被编译器自动拼接：&lt;code&gt;&quot;Hello, &quot; &quot;World!&quot;&lt;/code&gt; 等同于 &lt;code&gt;&quot;Hello, World!&quot;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;字符 &lt;code&gt;&apos;A&apos;&lt;/code&gt;（字符常量）和字符串 &lt;code&gt;&quot;A&quot;&lt;/code&gt;（字符串字面量）是不同的，后者包含 &lt;code&gt;&apos;A&apos;&lt;/code&gt; 和 &lt;code&gt;&apos;\0&apos;&lt;/code&gt; 两个字符。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1.&lt;/span&gt;&lt;span&gt; 整数字面量：&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&lt;span&gt;0x&lt;/span&gt;&lt;span&gt;FF&lt;/span&gt;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2.&lt;/span&gt;&lt;span&gt; 浮点数字面量：&lt;/span&gt;&lt;span&gt;3.14&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&lt;span&gt;1.0&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&lt;span&gt;2.5&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;3.&lt;/span&gt;&lt;span&gt; 字符常量：&lt;/span&gt;&lt;span&gt;&apos;a&apos;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&apos;0&apos;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&apos; &apos;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&apos;!&apos;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt;\0&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;4.&lt;/span&gt;&lt;span&gt; 字符串字面量：&lt;/span&gt;&lt;span&gt;&quot;任意内容&quot;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;（空字符串）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;5.&lt;/span&gt;&lt;span&gt; 布尔值：&lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt; 和 &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;（具体用法取决于采用的 C 标准）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;主要用途：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1.&lt;/span&gt;&lt;span&gt; 参与表达式计算或通过 printf 输出，此时应使用与类型相匹配的格式说明符。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2.&lt;/span&gt;&lt;span&gt; 为变量提供初始值，例如：&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; ch &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;a&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;普通字符常量通常使用单引号，例如 &lt;code&gt;&apos;A&apos;&lt;/code&gt;。源代码中的中文字符涉及源文件编码、执行字符集和实现支持，不能简单假设 &lt;code&gt;&apos;我&apos;&lt;/code&gt; 能像普通单字节字符一样存入 &lt;code&gt;char&lt;/code&gt;。处理中文文本时通常使用字符串及明确的字符编码方案，相关内容会在字符串章节中进一步说明。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】自定义常量&lt;a href=&quot;#2自定义常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;自定义常量常见有三种方式：&lt;code&gt;const&lt;/code&gt; 限定对象、对象式宏和枚举常量。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;（1）使用 &lt;code&gt;const&lt;/code&gt;&lt;a href=&quot;#1使用-const&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; MAX_STUDENTS &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; TAX_RATE &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0.13&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这种写法具有明确的数据类型，适合定义在运行过程中不应被修改的值。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（2）使用 &lt;code&gt;#define&lt;/code&gt;&lt;a href=&quot;#2使用-define&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;BUFFER_SIZE&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1024&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;PI&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.1415926&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;#define&lt;/code&gt; 由预处理器执行文本替换，没有变量类型，也不会为宏名称本身分配存储空间。为了便于识别，宏名称通常使用全大写字母和下划线。&lt;/p&gt;&lt;p&gt;宏定义末尾通常不写分号，否则分号也会成为替换内容的一部分：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MAX_COUNT&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;    // 正确&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（3）使用枚举常量&lt;a href=&quot;#3使用枚举常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;enum&lt;/span&gt;&lt;span&gt; Weekday {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;MONDAY &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;TUESDAY,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;WEDNESDAY&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;枚举常量适合表示一组相互关联的命名整数值。在上例中，&lt;code&gt;MONDAY&lt;/code&gt; 为 &lt;code&gt;1&lt;/code&gt;，后续未显式赋值的成员依次递增，因此 &lt;code&gt;TUESDAY&lt;/code&gt; 为 &lt;code&gt;2&lt;/code&gt;、&lt;code&gt;WEDNESDAY&lt;/code&gt; 为 &lt;code&gt;3&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【五】变量&lt;a href=&quot;#五变量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;变量是具有名称、类型和值的程序对象，其保存的值可以在允许的范围内发生变化。“可以变化”表示变量具备修改能力，并不意味着它在程序运行期间一定会被修改。&lt;/p&gt;&lt;p&gt;例如，鸡蛋的单价可能随时间改变，因此可以使用变量保存；某一时刻赋给该变量的 &lt;code&gt;1.0&lt;/code&gt; 则是一个固定的字面量。&lt;/p&gt;&lt;p&gt;从入门角度看，可以把变量理解为一块用于存放数据的存储区域：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;变量类型&lt;/strong&gt;决定数据的表示方式、允许执行的操作及通常需要的存储空间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;变量名&lt;/strong&gt;用于在源代码中标识这个对象。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;变量值&lt;/strong&gt;是当前保存在对象中的数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;变量地址&lt;/strong&gt;表示对象在存储空间中的位置，可以使用取地址运算符 &lt;code&gt;&amp;amp;&lt;/code&gt; 获取可寻址对象的地址。&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;“变量一定真实占用一块独立内存”是便于入门的理解。经过优化后，编译器可能把变量保存在寄存器中，甚至完全消除不必要的变量；程序应依据 C 语言规则使用变量，而不应依赖编译器具体如何存储它。&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h2&gt;【1】变量的声明、定义与初始化&lt;a href=&quot;#1变量的声明定义与初始化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; age;&lt;/span&gt;&lt;span&gt;              // 定义变量，但没有显式初始化&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;      // 定义变量并初始化&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; price &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1.0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;   // 定义并初始化 double 变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;score &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;           // 赋值：修改变量已有的值&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;基本格式如下：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;数据类型 变量名 = 初始值;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据类型&lt;/strong&gt;：规定数据的表示方式、取值范围和可执行的操作。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;变量名&lt;/strong&gt;：在程序中访问变量时使用的标识符。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;=&lt;/code&gt;&lt;/strong&gt;：在定义中表示初始化，在普通语句中表示赋值。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;初始值&lt;/strong&gt;：变量创建时获得的第一个值。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;初始化与赋值看起来都使用 &lt;code&gt;=&lt;/code&gt;，但发生时机不同：初始化发生在对象创建时，而赋值用于修改已经存在的对象。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;声明&lt;/strong&gt;用于向编译器说明名称及其类型，&lt;strong&gt;定义&lt;/strong&gt;还会真正创建对应的对象。变量定义本身也是一种声明；使用 &lt;code&gt;extern&lt;/code&gt; 且不带初始化器的写法通常只进行声明：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;extern&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; shared_count;&lt;/span&gt;&lt;span&gt;    // 声明：定义位于其他位置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; shared_count &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;       // 定义：创建对象并初始化&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;同一个作用域中可以存在相互兼容的重复声明，但一个对象通常只能有一个定义。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】未初始化变量&lt;a href=&quot;#2未初始化变量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;函数内部的普通局部变量如果没有显式初始化，其值通常是不确定的。读取这种不确定值通常会导致未定义行为，因此应遵循“先初始化，再使用”的原则。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; count;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; count&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span&gt;    // 错误示例：count 尚未初始化&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;可以在定义时给出初始值：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; count &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; count&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span&gt;    // 正确：输出 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;文件作用域变量以及使用 &lt;code&gt;static&lt;/code&gt; 声明的对象，如果没有显式初始化，会按规则进行零初始化：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; total;&lt;/span&gt;&lt;span&gt;    // 自动初始化为 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;“垃圾值”是日常教学中的形象说法，但不够严谨。标准术语是&lt;strong&gt;不确定值&lt;/strong&gt;；问题也不只是输出不可预测，读取它还可能导致未定义行为。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】作用域与生命周期&lt;a href=&quot;#3作用域与生命周期&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用域&lt;/strong&gt;决定变量名可以在源代码的哪些位置被访问。&lt;/li&gt;
&lt;li&gt;**生命周期（存储期）**决定变量对应的对象从何时存在到何时结束。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;函数内部定义的普通局部变量通常只能在所在代码块中访问，并在进入代码块时创建、离开代码块时结束。文件作用域变量和静态局部变量通常在整个程序运行期间存在。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; global_count &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;      // 文件作用域变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;increase&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; calls &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;  // 仅在本函数中可见，但值会跨调用保留&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; step &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;          // 普通局部变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;calls &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;global_count &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; step;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【六】数据类型&lt;a href=&quot;#六数据类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;数据类型规定一组数据的表示方式、取值范围以及可以对其执行的操作。C 语言是静态类型语言，变量和函数的类型在编译阶段就需要确定。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;C 语言没有“引用数据类型”这一类别。引用是 C++ 等语言中的概念；C 语言通过指针间接访问对象。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;从入门角度，可以将常见类型整理如下：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1. 基本类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;a. 字符类型：char、signed char、unsigned char&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;b. 整数类型：short、int、long、long long 及其 signed/unsigned 形式&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;c. 布尔类型：_Bool（C99）；bool 是常用写法&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;d. 浮点类型：float、double、long double&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2. 枚举类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;enum&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;3. void 类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;表示“无值”，常用于无返回值函数和通用对象指针 void *&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;4. 派生类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;指针、数组和函数类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;5. 结构与联合类型&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span&gt;struct、union&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h2&gt;【1】整数类型&lt;a href=&quot;#1整数类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;整数类型用于表示没有小数部分的数值。&lt;code&gt;signed&lt;/code&gt; 类型可表示负数、零和正数，&lt;code&gt;unsigned&lt;/code&gt; 类型只表示非负数。&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;常见含义&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;char&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符或小整数&lt;/td&gt;&lt;td&gt;大小始终为 1 字节；是否有符号由实现决定&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;short&lt;/code&gt;&lt;/td&gt;&lt;td&gt;短整型&lt;/td&gt;&lt;td&gt;至少 16 位&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td&gt;基本整型&lt;/td&gt;&lt;td&gt;通常是平台上运算较自然的整数类型，至少 16 位&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;&lt;td&gt;长整型&lt;/td&gt;&lt;td&gt;至少 32 位&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;long long&lt;/code&gt;&lt;/td&gt;&lt;td&gt;长长整型&lt;/td&gt;&lt;td&gt;至少 64 位&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;C 标准只规定各类型的最小表示范围和相对等级，并不保证 &lt;code&gt;int&lt;/code&gt; 永远是 4 字节。实际大小取决于编译器和目标平台，可用 &lt;code&gt;sizeof&lt;/code&gt; 运算符查看。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(char)      = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(short)     = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;short&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(int)       = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(long)      = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(long long) = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;sizeof&lt;/code&gt; 的结果类型是 &lt;code&gt;size_t&lt;/code&gt;，使用 &lt;code&gt;printf&lt;/code&gt; 输出时应采用 &lt;code&gt;%zu&lt;/code&gt; 格式说明符。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】浮点类型&lt;a href=&quot;#2浮点类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;浮点类型用于表示带小数部分或范围很大的近似数值：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;常见精度&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;&lt;td&gt;约 6～9 位十进制有效数字&lt;/td&gt;&lt;td&gt;单精度浮点类型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;约 15～17 位十进制有效数字&lt;/td&gt;&lt;td&gt;双精度浮点类型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;long double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;不低于 &lt;code&gt;double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;具体精度由实现决定&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;浮点数采用有限位数表示，很多十进制小数无法被精确存储，因此不应简单使用 &lt;code&gt;==&lt;/code&gt; 判断两个计算所得的浮点数是否相等。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; result &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0.1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;%.17f&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; result&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span&gt;  // 结果可能不是精确的 0.3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】布尔类型&lt;a href=&quot;#3布尔类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C99 引入 &lt;code&gt;_Bool&lt;/code&gt; 类型，其值会归一化为 &lt;code&gt;0&lt;/code&gt; 或 &lt;code&gt;1&lt;/code&gt;。在 C17 及更早标准中，通常包含 &lt;code&gt;&amp;lt;stdbool.h&amp;gt;&lt;/code&gt; 后使用更易读的 &lt;code&gt;bool&lt;/code&gt;、&lt;code&gt;true&lt;/code&gt; 和 &lt;code&gt;false&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdbool.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; is_valid &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;在条件判断中，数值 &lt;code&gt;0&lt;/code&gt; 表示假，任何非零值都表示真。C23 已将 &lt;code&gt;bool&lt;/code&gt;、&lt;code&gt;true&lt;/code&gt; 和 &lt;code&gt;false&lt;/code&gt; 纳入语言本身。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【4】字符类型与字符编码&lt;a href=&quot;#4字符类型与字符编码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;char&lt;/code&gt; 本质上属于整数类型，也常用于保存字符编码单元。字符常量使用单引号，字符串字面量使用双引号：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; grade &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; message&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Hello&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;sizeof(char)&lt;/code&gt; 永远等于 &lt;code&gt;1&lt;/code&gt;，但 C 标准规定的“字节”不一定是 8 位。可以通过 &lt;code&gt;&amp;lt;limits.h&amp;gt;&lt;/code&gt; 中的 &lt;code&gt;CHAR_BIT&lt;/code&gt; 查看每字节的位数；在现代通用平台上通常为 8。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【5】固定宽度整数类型&lt;a href=&quot;#5固定宽度整数类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;当程序确实需要宽度明确的整数时，可以使用 &lt;code&gt;&amp;lt;stdint.h&amp;gt;&lt;/code&gt; 提供的类型，例如 &lt;code&gt;int8_t&lt;/code&gt;、&lt;code&gt;uint32_t&lt;/code&gt; 和 &lt;code&gt;int64_t&lt;/code&gt;。这些类型只有在实现能够提供对应宽度时才会定义。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdint.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uint32_t&lt;/span&gt;&lt;span&gt; color &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;0x&lt;/span&gt;&lt;span&gt;FF3366&lt;/span&gt;&lt;span&gt;U&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int64_t&lt;/span&gt;&lt;span&gt; distance &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;9000000000&lt;/span&gt;&lt;span&gt;LL&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;普通业务代码优先使用 &lt;code&gt;int&lt;/code&gt; 等基本类型；处理文件格式、网络协议、硬件寄存器等对位宽有明确要求的场景时，再考虑固定宽度类型。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言数据类型</title><link>https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/10%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/10%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/</guid><description>理解 C 语言的数据类型体系，包括基本类型、整数类型、浮点类型和逻辑类型。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】数据类型&lt;a href=&quot;#一数据类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;在 C 语言中，数据类型用于描述数据的性质。一个对象或表达式的类型，会影响以下内容：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;数据在内存中的表示方式和通常占用的空间；&lt;/li&gt;
&lt;li&gt;数据能够表示的取值范围与精度；&lt;/li&gt;
&lt;li&gt;可以对数据执行哪些运算；&lt;/li&gt;
&lt;li&gt;编译器应当如何解释对应的位模式。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;例如，同样一组二进制位，按整数、浮点数或字符解释时，含义可能完全不同。&lt;/p&gt;&lt;p&gt;C 语言的类型可以概括为以下几类：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;基本类型&lt;/strong&gt;：包括字符类型、整数类型、布尔类型和浮点类型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;枚举类型&lt;/strong&gt;：使用 &lt;code&gt;enum&lt;/code&gt; 定义一组具名的整数常量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;派生类型&lt;/strong&gt;：包括数组类型、指针类型和函数类型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构体与共用体类型&lt;/strong&gt;：分别使用 &lt;code&gt;struct&lt;/code&gt; 和 &lt;code&gt;union&lt;/code&gt; 组织多个成员。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;void&lt;/code&gt; 类型&lt;/strong&gt;：表示“没有值”，常用于无返回值函数和通用对象指针 &lt;code&gt;void *&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;C 语言没有“引用类型”这一类别。引用是 C++ 等语言中的概念；C 语言主要通过指针间接访问其他对象。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;本章以初学阶段最常用的类型为主。除此之外，C99 还提供复数类型，C11 增加了原子类型相关机制，这些内容通常在数学计算和并发编程中进一步学习。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】基础数据类型&lt;a href=&quot;#二基础数据类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;C 语言的基本类型主要包括：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类别&lt;/th&gt;&lt;th&gt;常用类型&lt;/th&gt;&lt;th&gt;用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;字符类型&lt;/td&gt;&lt;td&gt;&lt;code&gt;char&lt;/code&gt;、&lt;code&gt;signed char&lt;/code&gt;、&lt;code&gt;unsigned char&lt;/code&gt;&lt;/td&gt;&lt;td&gt;保存字符编码单元或小整数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;整数类型&lt;/td&gt;&lt;td&gt;&lt;code&gt;short&lt;/code&gt;、&lt;code&gt;int&lt;/code&gt;、&lt;code&gt;long&lt;/code&gt;、&lt;code&gt;long long&lt;/code&gt; 及其无符号形式&lt;/td&gt;&lt;td&gt;保存整数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;布尔类型&lt;/td&gt;&lt;td&gt;&lt;code&gt;_Bool&lt;/code&gt;，以及常用写法 &lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&lt;td&gt;表示逻辑真与假&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;浮点类型&lt;/td&gt;&lt;td&gt;&lt;code&gt;float&lt;/code&gt;、&lt;code&gt;double&lt;/code&gt;、&lt;code&gt;long double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;保存带小数部分或范围较大的近似数值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;数据类型的实际大小与取值范围由 C 标准的最低要求、编译器、目标平台和数据模型共同决定，不能简单认为 &lt;code&gt;int&lt;/code&gt; 永远为 4 字节、&lt;code&gt;long&lt;/code&gt; 永远为 8 字节。&lt;/p&gt;&lt;p&gt;C 标准规定了整数类型的最低精度与相对关系，例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(char) &amp;lt;= sizeof(short) &amp;lt;= sizeof(int) &amp;lt;= sizeof(long) &amp;lt;= sizeof(long long)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;相邻类型的大小允许相同。&lt;code&gt;sizeof(char)&lt;/code&gt; 按定义始终为 &lt;code&gt;1&lt;/code&gt;，但 C 语言中的 1 字节不一定等于 8 位；每字节的位数可通过 &lt;code&gt;&amp;lt;limits.h&amp;gt;&lt;/code&gt; 中的 &lt;code&gt;CHAR_BIT&lt;/code&gt; 查看。现代通用平台通常为 8 位。&lt;/p&gt;&lt;p&gt;可以使用 &lt;code&gt;sizeof&lt;/code&gt; 查看当前编译环境中某个类型所占的字节数，并通过以下头文件查询类型范围：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;limits.h&amp;gt;&lt;/code&gt;：整数类型的范围和每字节位数；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;float.h&amp;gt;&lt;/code&gt;：浮点类型的范围与精度；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;stdint.h&amp;gt;&lt;/code&gt;：固定宽度整数类型及相关宏。&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h2&gt;【1】浮点类型&lt;a href=&quot;#1浮点类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;浮点类型用于表示带小数部分或数值范围较大的近似值：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;常见大小&lt;/th&gt;&lt;th&gt;常见有效数字&lt;/th&gt;&lt;th&gt;字面量示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;&lt;td&gt;4 字节&lt;/td&gt;&lt;td&gt;约 6～9 位十进制有效数字&lt;/td&gt;&lt;td&gt;&lt;code&gt;3.14f&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;8 字节&lt;/td&gt;&lt;td&gt;约 15～17 位十进制有效数字&lt;/td&gt;&lt;td&gt;&lt;code&gt;3.14&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;long double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;8、12 或 16 字节&lt;/td&gt;&lt;td&gt;不低于 &lt;code&gt;double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;3.14L&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;表中的大小与精度是现代平台上的常见情况，实际结果仍取决于具体实现。可以使用 &lt;code&gt;sizeof&lt;/code&gt; 查看大小，并通过 &lt;code&gt;&amp;lt;float.h&amp;gt;&lt;/code&gt; 中的 &lt;code&gt;FLT_DIG&lt;/code&gt;、&lt;code&gt;DBL_DIG&lt;/code&gt;、&lt;code&gt;LDBL_DIG&lt;/code&gt; 等宏查看精度。&lt;/p&gt;&lt;p&gt;浮点数使用有限位数保存数值，很多十进制小数无法被二进制浮点格式精确表示：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; result &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0.1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;%.17f&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, result);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;常见输出为 &lt;code&gt;0.30000000000000004&lt;/code&gt;。因此，判断浮点计算结果是否相等时，通常需要结合业务允许的误差范围，而不能一律直接使用 &lt;code&gt;==&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】&lt;code&gt;void&lt;/code&gt; 类型&lt;a href=&quot;#2void-类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;void&lt;/code&gt; 表示“没有值”或“不指定具体对象类型”，主要有以下用途：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;print_message&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;span&gt;  // 函数没有返回值，并且不接收参数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;data;&lt;/span&gt;&lt;span&gt;                // 可以保存任意对象的地址&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;不能定义 &lt;code&gt;void&lt;/code&gt; 类型的普通变量，因为 &lt;code&gt;void&lt;/code&gt; 没有可存储的值和确定的对象大小。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;void *&lt;/code&gt; 是通用对象指针，可以与其他对象指针相互转换。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;void *&lt;/code&gt; 不包含所指对象的具体类型信息，因此不能直接解引用；使用前需要转换或赋给正确类型的对象指针。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】逻辑类型&lt;a href=&quot;#三逻辑类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;C99 引入了 &lt;code&gt;_Bool&lt;/code&gt; 类型。包含 &lt;code&gt;&amp;lt;stdbool.h&amp;gt;&lt;/code&gt; 后，在 C17 及更早标准中通常可以使用更易读的 &lt;code&gt;bool&lt;/code&gt;、&lt;code&gt;true&lt;/code&gt; 和 &lt;code&gt;false&lt;/code&gt;；C23 已将 &lt;code&gt;bool&lt;/code&gt;、&lt;code&gt;true&lt;/code&gt; 和 &lt;code&gt;false&lt;/code&gt; 纳入语言本身。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdbool.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; is_ready &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt; has_error &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;在条件判断中：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;数值 &lt;code&gt;0&lt;/code&gt; 表示假；&lt;/li&gt;
&lt;li&gt;任何非零值都表示真；&lt;/li&gt;
&lt;li&gt;将任意标量值转换为 &lt;code&gt;_Bool&lt;/code&gt; 时，&lt;code&gt;0&lt;/code&gt; 会转换为 &lt;code&gt;0&lt;/code&gt;，非零值会转换为 &lt;code&gt;1&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;因此，“非零为真”描述的是条件判断规则，并不表示所有非零值本身都等于整数 &lt;code&gt;1&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;} &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 0.5 是非零值，条件为真，因此 x 最终为 12。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;浮点数也可以作为判断条件，但实际程序通常应写出含义更明确的比较表达式，例如 &lt;code&gt;value != 0.0&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】整数类型&lt;a href=&quot;#四整数类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;C 的标准整数类型包括 &lt;code&gt;char&lt;/code&gt;、&lt;code&gt;short&lt;/code&gt;、&lt;code&gt;int&lt;/code&gt;、&lt;code&gt;long&lt;/code&gt; 和 &lt;code&gt;long long&lt;/code&gt;，每种标准有符号整数类型（除 plain &lt;code&gt;char&lt;/code&gt; 外）都有对应的无符号形式。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;signed char / unsigned char&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;signed short / unsigned short&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;signed int / unsigned int&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;signed long / unsigned long&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;signed long long / unsigned long long&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其中，&lt;code&gt;signed&lt;/code&gt; 可以省略，因此 &lt;code&gt;short&lt;/code&gt; 等价于 &lt;code&gt;signed short&lt;/code&gt;，&lt;code&gt;int&lt;/code&gt; 等价于 &lt;code&gt;signed int&lt;/code&gt;。但是，&lt;code&gt;char&lt;/code&gt;、&lt;code&gt;signed char&lt;/code&gt; 和 &lt;code&gt;unsigned char&lt;/code&gt; 是三个不同的类型，普通 &lt;code&gt;char&lt;/code&gt; 是否带符号由具体实现决定。&lt;/p&gt;&lt;p&gt;下面表格中的字节数和范围是常见 8 位字节、二进制补码环境中的典型结果，并非 C 标准对所有平台的固定要求。编写程序时，可以使用 &lt;code&gt;sizeof&lt;/code&gt; 和 &lt;code&gt;&amp;lt;limits.h&amp;gt;&lt;/code&gt; 在当前环境中确认。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;【1】字符类型（&lt;code&gt;char&lt;/code&gt;）&lt;a href=&quot;#1字符类型char&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型名称&lt;/th&gt;&lt;th&gt;常见长度&lt;/th&gt;&lt;th&gt;常见范围&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;char&lt;/code&gt;&lt;/td&gt;&lt;td&gt;1 字节&lt;/td&gt;&lt;td&gt;由实现决定&lt;/td&gt;&lt;td&gt;与 &lt;code&gt;signed char&lt;/code&gt;、&lt;code&gt;unsigned char&lt;/code&gt; 都是不同类型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;signed char&lt;/code&gt;&lt;/td&gt;&lt;td&gt;1 字节&lt;/td&gt;&lt;td&gt;-128 ～ 127&lt;/td&gt;&lt;td&gt;明确表示有符号小整数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;unsigned char&lt;/code&gt;&lt;/td&gt;&lt;td&gt;1 字节&lt;/td&gt;&lt;td&gt;0 ～ 255&lt;/td&gt;&lt;td&gt;也常用于查看对象的原始字节&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;给整数类型赋值时，需要注意目标类型能否表示该值：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; c1 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; c2 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;如果当前实现的普通 &lt;code&gt;char&lt;/code&gt; 是有符号的，并且无法表示 &lt;code&gt;129&lt;/code&gt;，转换结果由实现定义，编译器也可能发出警告；这不一定是编译错误。&lt;/li&gt;
&lt;li&gt;转换到无符号整数类型时，数值会按该类型可表示值数量取模。在 8 位 &lt;code&gt;unsigned char&lt;/code&gt; 环境中，&lt;code&gt;-1&lt;/code&gt; 会转换为 &lt;code&gt;255&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;不应依赖超出范围后的隐式转换结果来表达正常业务逻辑。需要明确范围时，应先检查数值，再进行转换。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】&lt;code&gt;short&lt;/code&gt; 类型&lt;a href=&quot;#2short-类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型名称&lt;/th&gt;&lt;th&gt;常见长度&lt;/th&gt;&lt;th&gt;常见范围&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;short&lt;/code&gt;（&lt;code&gt;signed short&lt;/code&gt;）&lt;/td&gt;&lt;td&gt;2 字节&lt;/td&gt;&lt;td&gt;-32768 ～ 32767&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;unsigned short&lt;/code&gt;&lt;/td&gt;&lt;td&gt;2 字节&lt;/td&gt;&lt;td&gt;0 ～ 65535&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】int 类型&lt;a href=&quot;#3int-类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型名称&lt;/th&gt;&lt;th&gt;常见长度&lt;/th&gt;&lt;th&gt;常见范围&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;int&lt;/code&gt;（&lt;code&gt;signed int&lt;/code&gt;）&lt;/td&gt;&lt;td&gt;4 字节&lt;/td&gt;&lt;td&gt;-2147483648 ～ 2147483647&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;unsigned int&lt;/code&gt;&lt;/td&gt;&lt;td&gt;4 字节&lt;/td&gt;&lt;td&gt;0 ～ 4294967295&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【4】long 类型&lt;a href=&quot;#4long-类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;long&lt;/code&gt; 的大小不能仅根据“32 位或 64 位系统”判断，它还取决于平台采用的数据模型：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;常见环境&lt;/th&gt;&lt;th&gt;数据模型&lt;/th&gt;&lt;th&gt;&lt;code&gt;long&lt;/code&gt; 的常见长度&lt;/th&gt;&lt;th&gt;&lt;code&gt;signed long&lt;/code&gt; 的常见范围&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;32 位 Windows / Linux&lt;/td&gt;&lt;td&gt;ILP32&lt;/td&gt;&lt;td&gt;4 字节&lt;/td&gt;&lt;td&gt;-2&lt;sup&gt;31&lt;/sup&gt; ～ 2&lt;sup&gt;31&lt;/sup&gt; - 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;64 位 Windows（包括 MinGW-w64）&lt;/td&gt;&lt;td&gt;LLP64&lt;/td&gt;&lt;td&gt;4 字节&lt;/td&gt;&lt;td&gt;-2&lt;sup&gt;31&lt;/sup&gt; ～ 2&lt;sup&gt;31&lt;/sup&gt; - 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;64 位 Linux / macOS&lt;/td&gt;&lt;td&gt;LP64&lt;/td&gt;&lt;td&gt;8 字节&lt;/td&gt;&lt;td&gt;-2&lt;sup&gt;63&lt;/sup&gt; ～ 2&lt;sup&gt;63&lt;/sup&gt; - 1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;相应的 &lt;code&gt;unsigned long&lt;/code&gt; 范围通常为 0 ～ 2&lt;sup&gt;N&lt;/sup&gt; - 1，其中 &lt;code&gt;N&lt;/code&gt; 是该类型的位数。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【5】&lt;code&gt;long int&lt;/code&gt; 类型&lt;a href=&quot;#5long-int-类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;long int&lt;/code&gt; 不是另一种独立类型，它只是 &lt;code&gt;long&lt;/code&gt; 的完整写法；同理，&lt;code&gt;unsigned long int&lt;/code&gt; 与 &lt;code&gt;unsigned long&lt;/code&gt; 完全等价。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;L&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; b &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;L&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;                  // 与 long 相同&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;UL&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; d &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;UL&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;        // 与 unsigned long 相同&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【6】&lt;code&gt;long long&lt;/code&gt; 类型&lt;a href=&quot;#6long-long-类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型名称&lt;/th&gt;&lt;th&gt;常见长度&lt;/th&gt;&lt;th&gt;常见范围&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;long long&lt;/code&gt;（&lt;code&gt;signed long long&lt;/code&gt;）&lt;/td&gt;&lt;td&gt;8 字节&lt;/td&gt;&lt;td&gt;-2&lt;sup&gt;63&lt;/sup&gt; ～ 2&lt;sup&gt;63&lt;/sup&gt; - 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;unsigned long long&lt;/code&gt;&lt;/td&gt;&lt;td&gt;8 字节&lt;/td&gt;&lt;td&gt;0 ～ 2&lt;sup&gt;64&lt;/sup&gt; - 1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;code&gt;long long&lt;/code&gt; 从 C99 开始成为标准类型，标准保证它至少能够表示 -9223372036854775807 ～ 9223372036854775807。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【7】注意事项&lt;a href=&quot;#7注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;有符号整数发生超出可表示范围的算术溢出时，会产生未定义行为。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无符号整数运算按 2&lt;sup&gt;N&lt;/sup&gt; 取模，其中 &lt;code&gt;N&lt;/code&gt; 是该类型的值位数，因此不会发生标准意义上的有符号溢出，但仍可能造成逻辑错误。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;float&lt;/code&gt;、&lt;code&gt;double&lt;/code&gt; 和 &lt;code&gt;long double&lt;/code&gt; 没有对应的 &lt;code&gt;unsigned&lt;/code&gt; 形式，下面的写法都是语法错误：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt; value1;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; value2;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; value3;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;需要明确位宽时，可以使用 &lt;code&gt;&amp;lt;stdint.h&amp;gt;&lt;/code&gt; 中的 &lt;code&gt;int8_t&lt;/code&gt;、&lt;code&gt;uint32_t&lt;/code&gt;、&lt;code&gt;int64_t&lt;/code&gt; 等类型。只有实现能够提供相应宽度时，这些类型才会被定义。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【五】整数进制&lt;a href=&quot;#五整数进制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;按照进位规则计数的数制称为进位计数制，简称进位制。&lt;/li&gt;
&lt;li&gt;C 源代码中的整数字面量可以使用二进制、八进制、十进制和十六进制表示。&lt;/li&gt;
&lt;li&gt;进制只影响源代码的书写方式，不会改变整数在程序中的类型和值。例如，&lt;code&gt;10&lt;/code&gt;、&lt;code&gt;012&lt;/code&gt; 和 &lt;code&gt;0xA&lt;/code&gt; 表示的数值都等于十进制的 10。&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h2&gt;【1】二进制&lt;a href=&quot;#1二进制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;基数为 2 的进位制称为二进制。&lt;/p&gt;&lt;p&gt;二进制只有 &lt;code&gt;0&lt;/code&gt;、&lt;code&gt;1&lt;/code&gt; 两种数字，计数时逢 2 进 1。&lt;/p&gt;&lt;p&gt;二进制整数字面量以 &lt;code&gt;0b&lt;/code&gt; 或 &lt;code&gt;0B&lt;/code&gt; 开头，例如 &lt;code&gt;0b1010&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;code&gt;0b&lt;/code&gt; 前缀从 C23 开始成为标准语法；在更早的 C 标准模式中，它属于 GCC、Clang 等编译器提供的扩展。使用旧版编译器或严格的 C17 模式时，应先确认是否支持。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0b1010 = 1 × 2^3 + 0 × 2^2 + 1 × 2^1 + 0 × 2^0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;= 1 × 8   + 0 × 4   + 1 × 2   + 0 × 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;= 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】八进制&lt;a href=&quot;#2八进制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;基数为 8 的进位制称为八进制。&lt;/p&gt;&lt;p&gt;八进制包含 &lt;code&gt;0&lt;/code&gt;～&lt;code&gt;7&lt;/code&gt; 共八种数字，计数时逢 8 进 1。&lt;/p&gt;&lt;p&gt;八进制整数字面量以数字 &lt;code&gt;0&lt;/code&gt; 开头。&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;01010 = 1 × 8^3 + 0 × 8^2 + 1 × 8^1 + 0 × 8^0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;= 1 × 512 + 0 × 64  + 1 × 8   + 0 × 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;= 520&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;注意区分普通十进制数和以 &lt;code&gt;0&lt;/code&gt; 开头的八进制数。例如，&lt;code&gt;010&lt;/code&gt; 表示十进制的 8；&lt;code&gt;08&lt;/code&gt; 和 &lt;code&gt;09&lt;/code&gt; 不是合法的八进制整数字面量。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】十进制&lt;a href=&quot;#3十进制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;基数为 10 的进位制称为十进制。&lt;/p&gt;&lt;p&gt;十进制包含 &lt;code&gt;0&lt;/code&gt;～&lt;code&gt;9&lt;/code&gt; 共十种数字，计数时逢 10 进 1。&lt;/p&gt;&lt;p&gt;十进制整数字面量没有额外前缀。&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1010 = 1 × 10^3 + 0 × 10^2 + 1 × 10^1 + 0 × 10^0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;= 1 × 1000 + 0 × 100  + 1 × 10   + 0 × 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;= 1010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【4】十六进制&lt;a href=&quot;#4十六进制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;基数为 16 的进位制称为十六进制。&lt;/p&gt;&lt;p&gt;十六进制包含 &lt;code&gt;0&lt;/code&gt;～&lt;code&gt;9&lt;/code&gt; 和 &lt;code&gt;A&lt;/code&gt;～&lt;code&gt;F&lt;/code&gt;（不区分大小写）共 16 种数字，计数时逢 16 进 1。&lt;/p&gt;&lt;p&gt;十六进制整数字面量以 &lt;code&gt;0x&lt;/code&gt; 或 &lt;code&gt;0X&lt;/code&gt; 开头。&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0x1010 = 1 × 16^3 + 0 × 16^2 + 1 × 16^1 + 0 × 16^0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;= 1 × 4096 + 0 × 256  + 1 × 16   + 0 × 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span&gt;= 4112&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;上述公式中的 &lt;code&gt;^&lt;/code&gt; 仅用于表示数学上的乘方。在 C 表达式中，&lt;code&gt;^&lt;/code&gt; 是按位异或运算符，并不表示乘方。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;整数的进制与输出格式可以不同。&lt;code&gt;printf&lt;/code&gt; 常用的无符号整数格式说明符如下：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;格式说明符&lt;/th&gt;&lt;th&gt;输出形式&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%u&lt;/code&gt;&lt;/td&gt;&lt;td&gt;无符号十进制&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%o&lt;/code&gt;&lt;/td&gt;&lt;td&gt;无符号八进制&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%x&lt;/code&gt;&lt;/td&gt;&lt;td&gt;无符号十六进制（小写）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%X&lt;/code&gt;&lt;/td&gt;&lt;td&gt;无符号十六进制（大写）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;code&gt;printf&lt;/code&gt; 没有标准的二进制格式说明符。如果需要输出二进制，通常需要自行逐位处理。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【5】练习&lt;a href=&quot;#5练习&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;（1）进制表示&lt;a href=&quot;#1进制表示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;要求：分别使用二进制、八进制、十进制和十六进制字面量表示整数，并统一使用十进制输出。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;0b&lt;/span&gt;&lt;span&gt;1010&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;  // 二进制字面量（C23，旧版 GCC 也支持此扩展）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; b &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;1010&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;   // 八进制字面量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1010&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;    // 十进制字面量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; d &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;0x&lt;/span&gt;&lt;span&gt;1010&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;  // 十六进制字面量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;a = &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, a);&lt;/span&gt;&lt;span&gt;  // 以十进制输出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;b = &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, b);&lt;/span&gt;&lt;span&gt;  // 以十进制输出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;c = &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, c);&lt;/span&gt;&lt;span&gt;  // 以十进制输出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;d = &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, d);&lt;/span&gt;&lt;span&gt;  // 以十进制输出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;运行结果&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;a = 10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;b = 520&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;c = 1010&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;d = 4112&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（2）数据类型&lt;a href=&quot;#2数据类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;sizeof&lt;/code&gt; 运算符查看当前编译环境中常用数据类型占用的字节数。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(char)               = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(unsigned char)      = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(short)              = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;short&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(unsigned short)     = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;short&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(int)                = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(unsigned int)       = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(long)               = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(unsigned long)      = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(long int)           = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(unsigned long int)  = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(long long)          = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(unsigned long long) = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(float)              = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(double)             = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;sizeof(long double)        = &lt;/span&gt;&lt;span&gt;%zu&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;sizeof&lt;/code&gt; 表达式的结果类型是 &lt;code&gt;size_t&lt;/code&gt;，使用 &lt;code&gt;printf&lt;/code&gt; 输出时应匹配 &lt;code&gt;%zu&lt;/code&gt;，不能使用 &lt;code&gt;%d&lt;/code&gt;。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;运行结果&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;以下结果用于展示平台差异，不代表所有编译环境都完全相同。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Windows 10/11，x86_64 MinGW-w64 GCC 13.2.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(char)                  = 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned char)         = 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(short)                 = 2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned short)        = 2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(int)                   = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned int)          = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(long)                  = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned long)         = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(long int)              = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned long int)     = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(long long)             = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned long long)    = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(float)                 = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(double)                = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(long double)           = 16&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Ubuntu 18.04，x86_64 GCC 的一种典型结果&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(char)                  = 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned char)         = 1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(short)                 = 2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned short)        = 2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(int)                   = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned int)          = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(long)                  = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned long)         = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(long int)              = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned long int)     = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(long long)             = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(unsigned long long)    = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(float)                 = 4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(double)                = 8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sizeof(long double)           = 16&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【六】ASCII 码&lt;a href=&quot;#六ascii-码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;ASCII（American Standard Code for Information Interchange，美国信息交换标准代码）是一种早期且广泛使用的字符编码标准。&lt;/p&gt;&lt;p&gt;ASCII 使用 7 位编码，共定义 128 个码位，范围为十进制 &lt;code&gt;0&lt;/code&gt;～&lt;code&gt;127&lt;/code&gt;（十六进制 &lt;code&gt;0x00&lt;/code&gt;～&lt;code&gt;0x7F&lt;/code&gt;）。其中包含英文字母、十进制数字、常用符号和控制字符。&lt;/p&gt;&lt;p&gt;ASCII 的核心作用是建立&lt;strong&gt;字符与整数编码值之间的映射&lt;/strong&gt;。例如，在 ASCII 中，字符 &lt;code&gt;&apos;A&apos;&lt;/code&gt; 对应十进制值 &lt;code&gt;65&lt;/code&gt;，字符 &lt;code&gt;&apos;0&apos;&lt;/code&gt; 对应十进制值 &lt;code&gt;48&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;在 C 语言中，&lt;code&gt;char&lt;/code&gt; 属于整数类型，因此字符可以参与整数运算，也可以分别按字符形式或整数形式输出：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; ch &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;字符：&lt;/span&gt;&lt;span&gt;%c&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, ch);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;编码值：&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;)(&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;)ch);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;在 ASCII 环境中，程序会输出字符 &lt;code&gt;A&lt;/code&gt; 及其编码值 &lt;code&gt;65&lt;/code&gt;。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;C 语言标准并不强制执行字符集必须采用 ASCII，但 Windows、Linux 和 macOS 等现代通用环境通常兼容 ASCII 的前 128 个码位。ASCII 之外的中文等字符需要结合 UTF-8、GBK 等字符编码理解，不能简单当作单个 &lt;code&gt;char&lt;/code&gt; 处理。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;ASCII 可以划分为：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0x00&lt;/code&gt;～&lt;code&gt;0x1F&lt;/code&gt;：32 个控制字符；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0x20&lt;/code&gt;～&lt;code&gt;0x7E&lt;/code&gt;：95 个可打印字符；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0x7F&lt;/code&gt;：删除控制字符 DEL。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://oss.silentdream.top/2026/09/26/20-09-04-897c0d4e-image-20260922215505519-0ad119.png&quot; alt=&quot;image-20260922215505519&quot; /&gt;&lt;figcaption&gt;image-20260922215505519&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;【1】不可打印字符&lt;a href=&quot;#1不可打印字符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;不可打印字符通常不直接显示图形，而是用于控制文本、终端或通信过程。常见示例如下：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;ASCII 值&lt;/th&gt;&lt;th&gt;转义写法&lt;/th&gt;&lt;th&gt;名称&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;code&gt;\0&lt;/code&gt;&lt;/td&gt;&lt;td&gt;NUL（空字符）&lt;/td&gt;&lt;td&gt;C 字符串的结束标志&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;&lt;code&gt;\b&lt;/code&gt;&lt;/td&gt;&lt;td&gt;BS（退格）&lt;/td&gt;&lt;td&gt;对应退格控制功能&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;&lt;code&gt;\t&lt;/code&gt;&lt;/td&gt;&lt;td&gt;HT（水平制表）&lt;/td&gt;&lt;td&gt;移动到下一个水平制表位置&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;&lt;td&gt;LF（换行）&lt;/td&gt;&lt;td&gt;Unix/Linux 文本中的换行字符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;&lt;code&gt;\r&lt;/code&gt;&lt;/td&gt;&lt;td&gt;CR（回车）&lt;/td&gt;&lt;td&gt;将位置移至当前行开头；Windows 文本换行通常使用 &lt;code&gt;\r\n&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;127&lt;/td&gt;&lt;td&gt;无常用转义写法&lt;/td&gt;&lt;td&gt;DEL（删除）&lt;/td&gt;&lt;td&gt;删除控制字符&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;键盘上的 Enter 键会由终端或操作系统转换成相应的输入序列，并不能在所有环境下简单等同于单个 ASCII 10。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】可打印字符&lt;a href=&quot;#2可打印字符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;ASCII 值&lt;/th&gt;&lt;th&gt;字符&lt;/th&gt;&lt;th&gt;描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;空格&lt;/td&gt;&lt;td&gt;空格字符 &lt;code&gt;&apos; &apos;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;单引号；在字符常量中写作 &lt;code&gt;&apos;\&apos;&apos;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;47&lt;/td&gt;&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;正斜杠&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;48&lt;/td&gt;&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&lt;td&gt;数字字符 &lt;code&gt;&apos;0&apos;&lt;/code&gt;，不要与编码值为 0 的 &lt;code&gt;\0&lt;/code&gt; 混淆&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;&lt;code&gt;A&lt;/code&gt;&lt;/td&gt;&lt;td&gt;大写英文字母 A&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;92&lt;/td&gt;&lt;td&gt;&lt;code&gt;\&lt;/code&gt;&lt;/td&gt;&lt;td&gt;反斜杠；在 C 字符常量中写作 &lt;code&gt;&apos;\\&apos;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;96&lt;/td&gt;&lt;td&gt;&lt;code&gt;`&lt;/code&gt;&lt;/td&gt;&lt;td&gt;反引号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;97&lt;/td&gt;&lt;td&gt;&lt;code&gt;a&lt;/code&gt;&lt;/td&gt;&lt;td&gt;小写英文字母 a&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;124&lt;/td&gt;&lt;td&gt;&lt;code&gt;|&lt;/code&gt;&lt;/td&gt;&lt;td&gt;竖线&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;ASCII 中的数字字符和英文字母各自连续排列，因此可以进行一些简单换算：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; digit &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;7&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;0&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;       // 得到整数 7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; lower &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;       // ASCII 中得到字符 &apos;a&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其中，C 标准保证 &lt;code&gt;&apos;0&apos;&lt;/code&gt;～&lt;code&gt;&apos;9&apos;&lt;/code&gt; 连续，因此第一种数字转换写法具有可移植性；&lt;code&gt;&apos;A&apos; + 32&lt;/code&gt; 依赖 ASCII 的字母排列方式。更通用的大小写转换应使用 &lt;code&gt;&amp;lt;ctype.h&amp;gt;&lt;/code&gt; 中的 &lt;code&gt;tolower&lt;/code&gt; 和 &lt;code&gt;toupper&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;ctype.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; lower &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;tolower&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; upper &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;toupper&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&apos;a&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;为了在 Markdown 表格中显示竖线字符，表格中的 &lt;code&gt;|&lt;/code&gt; 写作 &lt;code&gt;\|&lt;/code&gt;。这只是 Markdown 转义，不属于字符本身。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言语法符号</title><link>https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/20%E8%AF%AD%E6%B3%95%E7%AC%A6%E5%8F%B7/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/20%E8%AF%AD%E6%B3%95%E7%AC%A6%E5%8F%B7/</guid><description>认识 C 语言的 Token、关键字、标识符、运算符、分隔符和标点符号。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】语法符号的理解&lt;a href=&quot;#一语法符号的理解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;每种编程语言都有自己的词汇和语法规则。编译器不会把源代码直接当作一整段文字理解，而是先进行词法分析，将代码识别成一个个具有语法意义的最小单元，这些单元通常称为 &lt;strong&gt;Token（记号或词法单元）&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; sum &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;可以识别为：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int    sum    =    a    +    10    ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;关键字 标识符  运算符 标识符 运算符 常量  标点符号&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;按照本系列笔记便于理解的分类方式，可以将常见语法符号分为：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;关键字&lt;/strong&gt;：由语言标准赋予固定含义的单词；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标识符&lt;/strong&gt;：由程序员命名的变量、函数、类型等名称；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运算符&lt;/strong&gt;：表示计算、比较、赋值或其他操作的符号；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分隔符&lt;/strong&gt;：用于分隔词法单元的空白字符和注释；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标点符号&lt;/strong&gt;：用于组织声明、表达式、语句和代码块的符号。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;此外，源代码中还有常量和字符串字面量。它们属于 C 语言 Token 的重要组成部分，将在“常量”章节单独讲解。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;从 C 标准的词法分类来看，许多“运算符”和“标点符号”会统一归入 &lt;strong&gt;punctuator（标点符号/界符）&lt;/strong&gt;。本章将它们分开说明，是为了便于初学者按用途理解。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】关键字&lt;a href=&quot;#二关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;关键字是由 C 语言标准预先规定并赋予特殊语法含义的单词，不能用作变量名、函数名或其他标识符。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;【1】C90 的 32 个关键字&lt;a href=&quot;#1c90-的-32-个关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C90 规定了 32 个经典关键字：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;auto       &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;      case       &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;continue&lt;/span&gt;&lt;span&gt;   default    &lt;/span&gt;&lt;span&gt;do&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;enum&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;extern&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;goto&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;long&lt;/span&gt;&lt;span&gt;       &lt;/span&gt;&lt;span&gt;register&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;short&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;signed&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;switch&lt;/span&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;typedef&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;union&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;unsigned&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;volatile&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;while&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;关键字区分大小写。例如，&lt;code&gt;int&lt;/code&gt; 是关键字，而 &lt;code&gt;Int&lt;/code&gt; 不是关键字；但不应通过改变大小写来创建含义相近的名称。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】后续标准新增的关键字&lt;a href=&quot;#2后续标准新增的关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;C 语言会随标准更新而扩展，因此“C 语言只有 32 个关键字”只适用于 C90。常见新增关键字如下：&lt;/p&gt;&lt;section&gt;&lt;h3&gt;（1）C99 新增&lt;a href=&quot;#1c99-新增&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;inline&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;restrict&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;_Bool&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;_Complex&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;_Imaginary&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;inline&lt;/code&gt;：建议以内联方式处理函数；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;restrict&lt;/code&gt;：表达指针访问对象的别名约束；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_Bool&lt;/code&gt;：布尔类型；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_Complex&lt;/code&gt;、&lt;code&gt;_Imaginary&lt;/code&gt;：复数和虚数类型相关关键字，其中虚数类型属于实现可选功能。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（2）C11 新增&lt;a href=&quot;#2c11-新增&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;_Alignas        _Alignof        _Atomic         _Generic&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;_Noreturn       _Static_assert  _Thread_local&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这些关键字主要用于对齐控制、原子操作、泛型选择、静态断言和线程存储期等功能。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（3）C23 常用新增关键字&lt;a href=&quot;#3c23-常用新增关键字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alignas          alignof          &lt;/span&gt;&lt;span&gt;bool&lt;/span&gt;&lt;span&gt;             constexpr&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;            nullptr         static_assert    thread_local&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;             typeof          typeof_unqual    _BitInt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;C23 较新，不同编译器对这些关键字的支持程度可能不同。学习或使用 C23 功能时，应确认编译器版本和所选择的语言标准模式。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】容易误认为关键字的名称&lt;a href=&quot;#3容易误认为关键字的名称&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;以下名称虽然经常出现在 C 程序中，但它们并不是 C 语言关键字：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;名称&lt;/th&gt;&lt;th&gt;实际性质&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;main&lt;/code&gt;&lt;/td&gt;&lt;td&gt;程序入口函数的约定名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;printf&lt;/code&gt;、&lt;code&gt;scanf&lt;/code&gt;&lt;/td&gt;&lt;td&gt;标准库函数名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;NULL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;标准头文件提供的宏&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;size_t&lt;/code&gt;&lt;/td&gt;&lt;td&gt;标准库定义的类型名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;include&lt;/code&gt;、&lt;code&gt;define&lt;/code&gt;&lt;/td&gt;&lt;td&gt;预处理指令中的名称&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;它们分别受到标准库或预处理规则约束，不能简单按普通关键字理解。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】标识符&lt;a href=&quot;#三标识符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;标识符是程序中名称的词法形式，可用于命名宏、变量、函数、形参、结构体成员、自定义类型等程序实体。&lt;/p&gt;&lt;p&gt;C 语言标识符的基本命名规则如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;基础且可移植的标识符由英文字母 &lt;code&gt;A-Z&lt;/code&gt;、&lt;code&gt;a-z&lt;/code&gt;、数字 &lt;code&gt;0-9&lt;/code&gt; 和下划线 &lt;code&gt;_&lt;/code&gt; 组成。&lt;/li&gt;
&lt;li&gt;第一个字符必须是字母或下划线，不能是数字。&lt;/li&gt;
&lt;li&gt;标识符不能与 C 语言关键字相同。&lt;/li&gt;
&lt;li&gt;C 语言区分大小写，因此 &lt;code&gt;sum&lt;/code&gt;、&lt;code&gt;Sum&lt;/code&gt; 和 &lt;code&gt;SUM&lt;/code&gt; 是三个不同的标识符。&lt;/li&gt;
&lt;li&gt;标识符中不能包含空格、连字符 &lt;code&gt;-&lt;/code&gt;、点号 &lt;code&gt;.&lt;/code&gt;、&lt;code&gt;@&lt;/code&gt; 等字符。&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;新版 C 标准也支持一定范围的通用字符名称及扩展字符，但其可用性还受源文件编码和编译器支持影响。基础学习及追求可移植性时，优先使用英文字母、数字和下划线。&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h2&gt;【1】合法与非法标识符&lt;a href=&quot;#1合法与非法标识符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;下面是一些合法的标识符：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;x    y    sum    a100    student_name    score2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;以下标识符不合法：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;名称&lt;/th&gt;&lt;th&gt;原因&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;1a&lt;/code&gt;&lt;/td&gt;&lt;td&gt;以数字开头&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;3&apos;a&lt;/code&gt;&lt;/td&gt;&lt;td&gt;以数字开头，并且包含单引号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;x*y&lt;/code&gt;&lt;/td&gt;&lt;td&gt;包含运算符 &lt;code&gt;*&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;@&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;@&lt;/code&gt; 不能构成基础标识符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;b.8&lt;/code&gt;&lt;/td&gt;&lt;td&gt;包含点号 &lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;my-name&lt;/code&gt;&lt;/td&gt;&lt;td&gt;包含连字符 &lt;code&gt;-&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;my name&lt;/code&gt;&lt;/td&gt;&lt;td&gt;包含空格，会被识别为两个词法单元&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;while&lt;/code&gt;&lt;/td&gt;&lt;td&gt;与关键字相同&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】命名建议&lt;a href=&quot;#2命名建议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;名称应表达用途，例如用 &lt;code&gt;student_count&lt;/code&gt; 表示学生数量，而不是随意使用 &lt;code&gt;a1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;可以采用下划线命名法 &lt;code&gt;student_count&lt;/code&gt; 或小驼峰命名法 &lt;code&gt;studentCount&lt;/code&gt;，同一项目中应保持一致。&lt;/li&gt;
&lt;li&gt;常量宏通常使用全大写字母和下划线，例如 &lt;code&gt;MAX_SIZE&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;不要只通过大小写区分含义相近的变量，例如同时定义 &lt;code&gt;data&lt;/code&gt;、&lt;code&gt;Data&lt;/code&gt; 和 &lt;code&gt;DATA&lt;/code&gt;，这会降低可读性。&lt;/li&gt;
&lt;li&gt;简短的局部循环变量可以使用 &lt;code&gt;i&lt;/code&gt;、&lt;code&gt;j&lt;/code&gt; 等惯用名称，但作用范围较大的名称应更具体。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】保留标识符&lt;a href=&quot;#3保留标识符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;某些形式的标识符保留给编译器、标准库或具体实现使用。编写用户代码时，应遵循以下安全规则：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;不要定义以双下划线开头的名称，如 &lt;code&gt;__value&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;不要定义以下划线加大写字母开头的名称，如 &lt;code&gt;_Value&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;在文件作用域中，避免定义任何以下划线开头的名称；&lt;/li&gt;
&lt;li&gt;不要重用标准库中已有的函数名、宏名和类型名来表达其他含义。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;例如，&lt;code&gt;_A7b_3x&lt;/code&gt; 从字符组成规则看是合法形式，但它以下划线和大写字母开头，属于实现保留标识符，不应在用户代码中使用。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】运算符&lt;a href=&quot;#四运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;运算符用于表示计算、比较、赋值、成员访问等操作。一个运算符需要几个操作数，就称为几元运算符。例如，&lt;code&gt;-a&lt;/code&gt; 中的 &lt;code&gt;-&lt;/code&gt; 是一元运算符，&lt;code&gt;a - b&lt;/code&gt; 中的 &lt;code&gt;-&lt;/code&gt; 是二元运算符，&lt;code&gt;condition ? a : b&lt;/code&gt; 是三元条件运算符。&lt;/p&gt;&lt;p&gt;按照功能，常用运算符可以概括为：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类别&lt;/th&gt;&lt;th&gt;常见运算符&lt;/th&gt;&lt;th&gt;作用概述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;算术运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;+&lt;/code&gt;、&lt;code&gt;-&lt;/code&gt;、&lt;code&gt;*&lt;/code&gt;、&lt;code&gt;/&lt;/code&gt;、&lt;code&gt;%&lt;/code&gt;&lt;/td&gt;&lt;td&gt;执行基本算术运算&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;关系运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;、&lt;code&gt;&amp;lt;=&lt;/code&gt;、&lt;code&gt;&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;gt;=&lt;/code&gt;、&lt;code&gt;==&lt;/code&gt;、&lt;code&gt;!=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;比较两个值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;逻辑运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;、`&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;位运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;amp;&lt;/code&gt;、`&lt;/td&gt;&lt;td&gt;&lt;code&gt;、&lt;/code&gt;^&lt;code&gt;、&lt;/code&gt;~&lt;code&gt;、&lt;/code&gt;&amp;lt;&amp;lt;&lt;code&gt;、&lt;/code&gt;&amp;gt;&amp;gt;`&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;赋值运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;=&lt;/code&gt;、&lt;code&gt;+=&lt;/code&gt;、&lt;code&gt;-=&lt;/code&gt;、&lt;code&gt;*=&lt;/code&gt;、&lt;code&gt;/=&lt;/code&gt; 等&lt;/td&gt;&lt;td&gt;为对象赋值或执行复合赋值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;自增、自减运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;++&lt;/code&gt;、&lt;code&gt;--&lt;/code&gt;&lt;/td&gt;&lt;td&gt;将操作数增加或减少 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;条件运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;?:&lt;/code&gt;&lt;/td&gt;&lt;td&gt;根据条件从两个表达式中选择一个&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;指针相关运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;amp;&lt;/code&gt;、&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;获取对象地址或间接访问所指对象&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;成员访问运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;、&lt;code&gt;-&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;访问结构体或共用体成员&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;其他运算符&lt;/td&gt;&lt;td&gt;&lt;code&gt;sizeof&lt;/code&gt;、类型转换、下标 &lt;code&gt;[]&lt;/code&gt;、函数调用 &lt;code&gt;()&lt;/code&gt;、逗号 &lt;code&gt;,&lt;/code&gt;&lt;/td&gt;&lt;td&gt;完成类型大小查询等操作&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;同一个符号在不同上下文中可能具有不同含义。例如，&lt;code&gt;*&lt;/code&gt; 既可以表示乘法，也可以用于声明指针或解引用指针；&lt;code&gt;&amp;amp;&lt;/code&gt; 既可以表示按位与，也可以表示取地址。&lt;/p&gt;&lt;p&gt;运算符还涉及优先级、结合性和求值规则。为了让表达式含义更清楚，不确定时应主动使用圆括号，而不是仅依赖记忆优先级。具体规则将在后续运算符章节中展开。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【五】分隔符&lt;a href=&quot;#五分隔符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;分隔符用于划分相邻的词法单元。常见分隔内容包括：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;空格（space）；&lt;/li&gt;
&lt;li&gt;水平制表符（tab）；&lt;/li&gt;
&lt;li&gt;换行符（newline）；&lt;/li&gt;
&lt;li&gt;其他空白字符，例如垂直制表和换页；&lt;/li&gt;
&lt;li&gt;注释 &lt;code&gt;// ...&lt;/code&gt; 和 &lt;code&gt;/* ... */&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;在预处理阶段，注释会被替换为空白，因此注释也能起到分隔词法单元的作用。字符串或字符常量内部的 &lt;code&gt;//&lt;/code&gt;、&lt;code&gt;/*&lt;/code&gt; 并不会开始注释：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;url &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://example.com&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;  // 字符串中的 // 是普通字符&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; slash &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;/&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;                         // 字符常量中的 / 是普通字符&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;空白字符有时可以省略，有时则必不可少：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; count;&lt;/span&gt;&lt;span&gt;     // int 和 count 之间必须分隔&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; intcount;&lt;/span&gt;&lt;span&gt;  // intcount 是一个完整的标识符，不等同于 int count&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;total&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;b;&lt;/span&gt;&lt;span&gt;     // 编译器能够识别，但不利于阅读&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;total &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; b;&lt;/span&gt;&lt;span&gt; // 含义相同，格式更清晰&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;还应注意：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;//&lt;/code&gt; 注释持续到当前行末尾；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/* ... */&lt;/code&gt; 块注释可以跨行，但不能嵌套；&lt;/li&gt;
&lt;li&gt;换行通常只是空白，但它会结束 &lt;code&gt;//&lt;/code&gt; 注释和预处理指令；&lt;/li&gt;
&lt;li&gt;不能用空白拆开一个完整的多字符运算符，例如 &lt;code&gt;&amp;gt;=&lt;/code&gt;、&lt;code&gt;==&lt;/code&gt;、&lt;code&gt;++&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;合理使用空格、缩进和换行不会改变大多数代码的含义，却能显著提升可读性并帮助排查语法错误。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【六】标点符号&lt;a href=&quot;#六标点符号&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;C 语言中常见的标点符号包括逗号、分号、冒号、圆括号、方括号、花括号、点号和箭头等。它们用于组织声明、表达式、语句、函数、数组和代码块。&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;符号&lt;/th&gt;&lt;th&gt;常见用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;,&lt;/code&gt;&lt;/td&gt;&lt;td&gt;分隔声明项、函数参数和初始化器；在特定上下文中也可作为逗号运算符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;结束声明或表达式语句；单独的 &lt;code&gt;;&lt;/code&gt; 表示空语句&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;:&lt;/code&gt;&lt;/td&gt;&lt;td&gt;用于 &lt;code&gt;case&lt;/code&gt;、&lt;code&gt;default&lt;/code&gt;、标签以及条件运算符 &lt;code&gt;?:&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;( )&lt;/code&gt;&lt;/td&gt;&lt;td&gt;函数声明与调用、条件、表达式分组和类型转换&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;[ ]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;数组声明、数组下标和属性语法等&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{ }&lt;/code&gt;&lt;/td&gt;&lt;td&gt;构成复合语句、函数体或初始化器&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;通过对象访问结构体或共用体成员&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;通过指针访问结构体或共用体成员&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;#&lt;/code&gt;、&lt;code&gt;##&lt;/code&gt;&lt;/td&gt;&lt;td&gt;预处理指令及宏中的字符串化、记号拼接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;...&lt;/code&gt;&lt;/td&gt;&lt;td&gt;可变参数函数或其他标准规定的省略形式&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;标点符号与空白分隔符不同：它们具有严格的语法作用，不能随意省略。部分符号在特定上下文中也属于运算符，例如逗号、圆括号、方括号、点号和箭头。&lt;/p&gt;&lt;p&gt;下面的程序集中演示了常见标点符号的用法：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; x &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; y;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;] &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; result &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;], &lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;]);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;switch&lt;/span&gt;&lt;span&gt; (result) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;case&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;result = &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; result&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;default&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;unexpected result&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;在这个示例中：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;逗号分隔函数形参、实参和数组初始化元素；&lt;/li&gt;
&lt;li&gt;分号结束声明、函数调用和 &lt;code&gt;return&lt;/code&gt;、&lt;code&gt;break&lt;/code&gt; 语句；&lt;/li&gt;
&lt;li&gt;圆括号用于函数声明、函数调用和 &lt;code&gt;switch&lt;/code&gt; 条件；&lt;/li&gt;
&lt;li&gt;方括号用于数组声明及下标访问；&lt;/li&gt;
&lt;li&gt;花括号构成初始化器、函数体和 &lt;code&gt;switch&lt;/code&gt; 语句体；&lt;/li&gt;
&lt;li&gt;冒号跟在 &lt;code&gt;case&lt;/code&gt; 和 &lt;code&gt;default&lt;/code&gt; 标签之后。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言常量</title><link>https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/30%E5%B8%B8%E9%87%8F/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/30%E5%B8%B8%E9%87%8F/</guid><description>学习 C 语言中的整型、浮点、字符和字符串常量，以及常量的使用方式。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】常量的理解&lt;a href=&quot;#一常量的理解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;常量是指在程序运行期间其数值不发生变化的数据。&lt;/p&gt;&lt;p&gt;常量包括以下几种：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;整型常量&lt;/li&gt;
&lt;li&gt;浮点常量&lt;/li&gt;
&lt;li&gt;字符常量&lt;/li&gt;
&lt;li&gt;字符串常量&lt;/li&gt;
&lt;li&gt;标识常量&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】整型常量&lt;a href=&quot;#二整型常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;整型常量通常简称为整数。&lt;/p&gt;&lt;p&gt;整数可以是十进制数、八进制数和十六进制数。&lt;/p&gt;&lt;p&gt;例如，十进制的数值3356可以有下列三种不同的表示形式：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;二进制数 0b1101 0001 1100&lt;/li&gt;
&lt;li&gt;十进制数 3356&lt;/li&gt;
&lt;li&gt;八进制数 06434&lt;/li&gt;
&lt;li&gt;十六进制数 0xd1c&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】浮点常量&lt;a href=&quot;#三浮点常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;浮点常量又称为实数，一般含有小数部分。&lt;/p&gt;&lt;p&gt;C语言中，实数只有十进制的实数，它又分为单精度实数和双精度实数，它们的表示方法基本相同。&lt;/p&gt;&lt;p&gt;实数有两种表示方法，即一般形式和指数形式。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一般形式&lt;/strong&gt;的基本形式如下： &lt;code&gt;[ + | - ] M.N&lt;/code&gt;&lt;/p&gt;&lt;p&gt;例如：3.5，-12.5，3.1415926&lt;/p&gt;&lt;p&gt;&lt;strong&gt;指数形式&lt;/strong&gt;的实数一般是由尾数部分、字母e或E和指数部分组成。 当一个实数的符号为正号时，可以省略不写。&lt;/p&gt;&lt;p&gt;表示形式如下：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[+|-]M.N&amp;lt;e|E&amp;gt;[+|-]T&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1.176e+10      表示   1.176x10^10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-3.5789e-8     表示  -3.5789x10^-8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;通常表示特别大或特别小的数。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【五】字符常量&lt;a href=&quot;#五字符常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;字符常量是指一个单一字符，其表示形式是由两个单引号包括的一个字符。&lt;/p&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&apos;A&apos;, &apos;a&apos;, &apos;Q&apos;, &apos;0&apos;, &apos;9&apos;, &apos;+&apos;, &apos;:&apos;, &apos;?&apos;, &apos; &apos;, &apos;$&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;都是字符常量。&lt;/p&gt;&lt;p&gt;在C语言中，字符常量具有数值。字符常量的值就是该字符的ASCII码值。&lt;/p&gt;&lt;p&gt;因此，可以这样说字符常量实际上是一字节的正整数。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;练习-字符常量&lt;a href=&quot;#练习-字符常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;计算并输出下面字符的结果&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt;  a, b, u, v ;&lt;/span&gt;&lt;span&gt;      // 说明a、b、u和v为字符变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;F&apos;&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;span&gt;               // 将70送给a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;b &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;              // b存放的是 &apos;c&apos; 字符&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos; &apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;B&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;          // u存放的是 &apos;b&apos; 字符&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;v&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;b&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;            // v存放的是 &apos;B&apos; 字符&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;等价运算&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; a, b, u, v;&lt;/span&gt;&lt;span&gt; // 说明 : a b u v 是字符变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;F&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; // 将 70 赋值给 a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;b &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;A&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; // b 存放的是 &apos;C&apos; 的字符&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;u &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos; &apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;B&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; // u 存放是的是 &apos;b&apos; 的字符&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;v &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;b&apos;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; // v 存放的是 &apos;B&apos; 的字符&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;a=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, a);&lt;/span&gt;&lt;span&gt; // 70&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;b=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, b);&lt;/span&gt;&lt;span&gt; // 65 + 2 = 67&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;u=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, u);&lt;/span&gt;&lt;span&gt; // 66 + 32 = 98&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;v=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, v);&lt;/span&gt;&lt;span&gt; // 98 - 32 = 66&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;u&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;v&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【六】字符串常量&lt;a href=&quot;#六字符串常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;字符串常量是指用双引号括起来的一串字符来表示的数据。&lt;/p&gt;&lt;p&gt;下面给出几个字符串常量的例子：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;Helloworld!&quot;&lt;/span&gt;&lt;span&gt;,   &lt;/span&gt;&lt;span&gt;&quot;Student&quot;&lt;/span&gt;&lt;span&gt;,   &lt;/span&gt;&lt;span&gt;&quot;9&quot;&lt;/span&gt;&lt;span&gt;,   &lt;/span&gt;&lt;span&gt;&quot;LINUX&quot;&lt;/span&gt;&lt;span&gt;,  &lt;/span&gt;&lt;span&gt;&quot;李四&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;北京海淀成府路***号&quot;&lt;/span&gt;&lt;span&gt;,   &lt;/span&gt;&lt;span&gt;&quot;姓名：&quot;&lt;/span&gt;&lt;span&gt;,   &lt;/span&gt;&lt;span&gt;&quot;******@qq.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;what matters is what you do, not what you think&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;行动比空想更重要。&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【七】标识常量&lt;a href=&quot;#七标识常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;标识常量是指用标识符代替常量使用的一种常量，其名称通常是一个标识符，别名宏。&lt;/p&gt;&lt;p&gt;标识常量也叫符号常量，为了不与一般变量的名称相混淆，标识常量的名称一般使用大写英文字母的标识符。&lt;/p&gt;&lt;p&gt;标识常量在使用之前必须预先定义。&lt;/p&gt;&lt;p&gt;标识常量的一般说明形式为：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;标识常量名称&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;常量&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MAX&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;PI&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.1415926&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;EOF&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ERROR&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其中，MAX、PI、NULL、EOF和ERROR都是标识常量，它们代替的常量分别是50、3.1415926、0、-1和-1。&lt;/p&gt;&lt;p&gt;这里，每个标识常量说明式子只能给出一个标识常量，并且占据一个书写行。&lt;/p&gt;&lt;p&gt;以下是图片内容的 Markdown 格式转换：&lt;/p&gt;&lt;section&gt;&lt;h2&gt;练习-水分子数&lt;a href=&quot;#练习-水分子数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一个水分子的质量约为3.0*10^-23g，1夸脱水大约有950g，编写程序，要求输入水的夸脱数，然后显示这么多水中包含多少水分子。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;代码实现:&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;windows.h&amp;gt;&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// 引入 windows 头文件，用于设置控制台编码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 定义一个水分子的质量（单位：克）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;WATER_MOLECULES&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span&gt;3.0&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 强制控制台输出使用 UTF-8 编码，确保中文显示正常&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;SetConsoleOutputCP&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;65001&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 提示用户输入水的夸脱数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;请输入水的夸脱数：&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 声明变量用于存储用户输入的夸脱数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; num;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 读取用户输入的整数（夸脱数）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;scanf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;num);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 显示用户输入的夸脱数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;水的夸脱数为:&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, num);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/* 计算水分子数量的公式说明：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 1. 首先计算总质量：夸脱数 × 950（每夸脱的质量）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 2. 然后除以一个水分子的质量（3.0e-23克）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 3. 得到的就是总的水分子数量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt; 夸脱中 包含 &lt;/span&gt;&lt;span&gt;%e&lt;/span&gt;&lt;span&gt; 个水分子&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, num, num &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;950&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; WATER_MOLECULES);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;运行结果&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;请输入水的夸脱数 &amp;gt;:10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;num=10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;10 夸脱的水中有 3.166667e+026 个水分子&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;练习-求圆面积&lt;a href=&quot;#练习-求圆面积&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;输入圆的半径计算圆的面积和周长&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言变量与存储类型</title><link>https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/40%E5%8F%98%E9%87%8F/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/40%E5%8F%98%E9%87%8F/</guid><description>理解 C 语言变量的定义、命名规则、作用域，以及 auto、register、extern 和 static 存储类型。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】变量的理解&lt;a href=&quot;#一变量的理解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：变量是指在程序运行期间其数值可以发生变化的数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;表示方式&lt;/strong&gt;：变量在程序中用变量名表示，变量名由用户根据其用途任意命名。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;命名规则&lt;/strong&gt;：变量名命名遵从标识符的起名规则。
&lt;ul&gt;
&lt;li&gt;只能由字母、数字、下划线组成。&lt;/li&gt;
&lt;li&gt;开头不能是数字。&lt;/li&gt;
&lt;li&gt;不能和系统的关键字重名。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内存概念&lt;/strong&gt;：在程序运行时，变量占据一定大小的存储空间，其大小由其数据类型来决定，作为某变量的内存空间的首地址，称为变量的地址。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】变量的定义&lt;a href=&quot;#二变量的定义&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;使用前提&lt;/strong&gt;：变量在程序中使用时，必须预先说明它们的存储类型和数据类型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一般形式&lt;/strong&gt;：
&lt;code&gt;&amp;lt;存储类型&amp;gt; &amp;lt;数据类型&amp;gt; &amp;lt;变量名&amp;gt;;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;存储类型&amp;gt;&lt;/code&gt;：可以是关键词 &lt;code&gt;auto&lt;/code&gt;、&lt;code&gt;register&lt;/code&gt;、&lt;code&gt;static&lt;/code&gt; 和 &lt;code&gt;extern&lt;/code&gt; 之一。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;数据类型&amp;gt;&lt;/code&gt;：可以是前面讲的基本数据类型，也可以是后面要讲的自定义的数据类型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;变量名&amp;gt;&lt;/code&gt;：是一个合法的标识符，其前面的32字符有效。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意事项&lt;/strong&gt;：在上述变量说明的式子中，&lt;code&gt;&amp;lt;变量名&amp;gt;&lt;/code&gt; 之后有一个分号 &lt;code&gt;;&lt;/code&gt;，意味着它是一个语句，该语句通常称为变量的说明语句。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;常见基本数据类型&lt;/strong&gt;：
&lt;code&gt;char&lt;/code&gt;, &lt;code&gt;short&lt;/code&gt;, &lt;code&gt;int&lt;/code&gt;, &lt;code&gt;long&lt;/code&gt;, &lt;code&gt;long int&lt;/code&gt;, &lt;code&gt;long long&lt;/code&gt;, &lt;code&gt;float&lt;/code&gt;, &lt;code&gt;double&lt;/code&gt;, &lt;code&gt;long double&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这张图片是上一份笔记的延续，接着讲解了C语言中变量的另外三种&lt;strong&gt;存储类型&lt;/strong&gt;：&lt;code&gt;auto&lt;/code&gt;、&lt;code&gt;register&lt;/code&gt; 和 &lt;code&gt;extern&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;为了方便你阅读和复习，我同样将图片内容整理成了结构化的笔记：&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】auto存储类型&lt;a href=&quot;#三auto存储类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用域&lt;/strong&gt;：用 &lt;code&gt;auto&lt;/code&gt; 存储类型说明的变量都是局部于某个程序范围内的，只能在某个程序范围内使用，通常在函数体内或函数中的复合语句里。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语法特点&lt;/strong&gt;：C语言中，在函数体的某程序段内说明 &lt;code&gt;auto&lt;/code&gt; 存储类型的变量时&lt;strong&gt;可以省略关键字 &lt;code&gt;auto&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码示例&lt;/strong&gt;：
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;auto &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; k ;&lt;/span&gt;&lt;span&gt;   //说明一个auto整型的k变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; j ;&lt;/span&gt;&lt;span&gt;        //省略了auto，说明一个auto整型的j变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x;&lt;/span&gt;&lt;span&gt;      //省略了auto，说明一个auto双精度型的变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】register存储类型&lt;a href=&quot;#四register存储类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：&lt;code&gt;register&lt;/code&gt; 称为寄存器型。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：使用 &lt;code&gt;register&lt;/code&gt; 关键字说明的变量主要目的是想将所说明的变量放入CPU的寄存器存储空间中，这样可以&lt;strong&gt;加快程序的运行速度&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;机制&lt;/strong&gt;：如申请不到就使用一般内存，同 &lt;code&gt;auto&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;使用频率&lt;/strong&gt;：&lt;code&gt;register&lt;/code&gt; 在程序中使用较少（现代编译器优化已经很强大，通常不需要手动指定）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;代码示例&lt;/strong&gt;：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;register&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; count;&lt;/span&gt;&lt;span&gt;     // 定义一个存储类型为register的整型变量;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;register&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt; number;&lt;/span&gt;&lt;span&gt;  // 定义一个存储类型为register的浮点变量;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【五】extern存储类型&lt;a href=&quot;#五extern存储类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：&lt;code&gt;extern&lt;/code&gt; 称为外部参照引用型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目的&lt;/strong&gt;：使用 &lt;code&gt;extern&lt;/code&gt; 说明的变量是想引用在其它文件中函数体外部定义的变量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作用域&lt;/strong&gt;：当变量在一个文件中的函数体外定义，所有其他文件中的函数或程序段都可引用这个变量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：一般用于在文件之间传递数据。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这是关于变量基础知识的最后一部分内容，主要讲解了 &lt;strong&gt;&lt;code&gt;static&lt;/code&gt;（静态）存储类型&lt;/strong&gt;以及&lt;strong&gt;变量的初始化&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;基于你上传的图片，我继续为你整理成结构化笔记，并补充了一些初学者容易混淆的关键知识点，希望能帮到你：&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【六】static存储类型&lt;a href=&quot;#六static存储类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;code&gt;static&lt;/code&gt; 为静态存储类型，既可以在函数体内定义，也可以在函数体外定义 &lt;code&gt;static&lt;/code&gt; 类型的变量。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;在函数体内定义（静态局部变量）&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;在内存中以固定地址存放。&lt;/li&gt;
&lt;li&gt;程序运行时&lt;strong&gt;会保持其值&lt;/strong&gt;。它下次再调用该函数，该变量不再重新定义，还保留上次存入的数值。&lt;/li&gt;
&lt;li&gt;&lt;em&gt;💡 补充提示：静态局部变量只初始化一次。即使函数结束，它的内存也不会被回收，下一次调用函数时，它会保留上一次运行结束时的值。&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;在函数体外定义（静态全局变量）&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;主要作用是&lt;strong&gt;限定变量的作用域&lt;/strong&gt;，限定文件的作用域在本文件内。&lt;/li&gt;
&lt;li&gt;&lt;em&gt;💡 补充提示：普通全局变量可以通过 &lt;code&gt;extern&lt;/code&gt; 跨文件引用，但 &lt;code&gt;static&lt;/code&gt; 全局变量只能在当前源文件内使用（内部链接），其他文件即使写了 &lt;code&gt;extern&lt;/code&gt; 也无法访问，这有助于避免不同文件间的变量命名冲突。&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【七】变量的初始化&lt;a href=&quot;#七变量的初始化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;一般形式&lt;/strong&gt;：
&lt;code&gt;&amp;lt;存储类型&amp;gt; &amp;lt;数据类型&amp;gt; &amp;lt;变量&amp;gt; = &amp;lt;表达式&amp;gt; ;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;概念&lt;/strong&gt;：变量的初始化是指变量在被定义的同时赋给一个初值。&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; w&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;100.56&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; result &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;span&gt;  // 定义x并赋值为5，定义y并赋值为x*2 (10)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;register&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; count &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;auto &lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; s &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这是关于变量基础知识的最后一小部分内容，主要讲解了 &lt;strong&gt;常变量（&lt;code&gt;const&lt;/code&gt;）&lt;/strong&gt; 以及它与 &lt;strong&gt;符号常量（&lt;code&gt;#define&lt;/code&gt;）&lt;/strong&gt; 的核心区别。这也是C语言中非常经典的考点。&lt;/p&gt;&lt;p&gt;按照惯例，我为你整理了结构化的笔记，并补充了详细的对比表格：&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【八】常变量&lt;a href=&quot;#八常变量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;概念&lt;/strong&gt;：C99标准允许使用常变量，方法是在定义变量时，前面加一个关键字 &lt;code&gt;const&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：在程序运行期间其值不能改变。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;代码示例&lt;/strong&gt;：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; a3 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;   // 定义一个整型变量，指定其值为3，在程序运行期间其值不能改变。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;常变量与符号常量的区别（核心重点）&lt;a href=&quot;#常变量与符号常量的区别核心重点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;图片中给出了 &lt;code&gt;#define&lt;/code&gt; 和 &lt;code&gt;const&lt;/code&gt; 的对比示例：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Pi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.1415926&lt;/span&gt;&lt;span&gt;           // 定义符号常量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt; Pi &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.1415926&lt;/span&gt;&lt;span&gt;     // 定义常变量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;虽然两者在程序中都能代表 &lt;code&gt;3.1415926&lt;/code&gt;，但在底层机制上有本质区别：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;对比维度&lt;/th&gt;&lt;th&gt;符号常量 (&lt;code&gt;#define Pi 3.14...&lt;/code&gt;)&lt;/th&gt;&lt;th&gt;常变量 (&lt;code&gt;const float Pi = 3.14...&lt;/code&gt;)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;本质&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;预编译指令（宏定义）&lt;/td&gt;&lt;td&gt;变量（带只读属性）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;处理阶段&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;预编译阶段&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;编译和运行阶段&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;工作机制&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;简单的&lt;strong&gt;字符替换&lt;/strong&gt;（全置换）&lt;/td&gt;&lt;td&gt;分配内存，存入数值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;存储单元&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;不分配&lt;/strong&gt;存储单元（预编译后名字就消失了）&lt;/td&gt;&lt;td&gt;&lt;strong&gt;要占用&lt;/strong&gt;存储单元&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;类型检查&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;无类型，仅仅是文本替换&lt;/td&gt;&lt;td&gt;有明确数据类型，编译器会进行安全检查&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;生命周期&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;预编译后就不存在了&lt;/td&gt;&lt;td&gt;存在于程序的运行期间&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;
&lt;li&gt;💡 &lt;strong&gt;通俗理解&lt;/strong&gt;：&lt;code&gt;#define&lt;/code&gt; 就像是Word文档里的“查找替换”，在真正编译前，代码里所有的 &lt;code&gt;Pi&lt;/code&gt; 都被换成了数字；而 &lt;code&gt;const&lt;/code&gt; 是真正在内存里划了一小块地（存储单元），放进了数字，只不过这块地是“只读”的，不允许被修改。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言强制类型转换</title><link>https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/50%E5%BC%BA%E5%88%B6%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/50%E5%BC%BA%E5%88%B6%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2/</guid><description>学习 C 语言显式与隐式类型转换、整数提升及其常见使用场景。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】强制类型转换理解&lt;a href=&quot;#一强制类型转换理解&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;目的&lt;/strong&gt;：C语言的强制类型转换用于将一个数据类型转换为另一个数据类型，目的是为了让程序在编译和运行时能够正确地执行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;转换方式&lt;/strong&gt;：分为两种：
&lt;ul&gt;
&lt;li&gt;显式的数据类型转换&lt;/li&gt;
&lt;li&gt;隐式的数据类型转换&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】显式的数据类型转换&lt;a href=&quot;#二显式的数据类型转换&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一般形式&lt;/strong&gt;：&lt;code&gt;(数据类型名称) &amp;lt;表达式&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码示例解析&lt;/strong&gt;：
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;, b&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt; c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;4.8&lt;/span&gt;&lt;span&gt;, d&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;b &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;) (a &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; c &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;d) ;&lt;/span&gt;&lt;span&gt;   // b存入右边表达式的计算 结果为10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;计算过程&lt;/strong&gt;：&lt;code&gt;a + c + d&lt;/code&gt; 的结果是 &lt;code&gt;2 + 4.8 + 3.3 = 10.1&lt;/code&gt;（此时是浮点型 float）。&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;(int)&lt;/code&gt; 强制转换，&lt;code&gt;10.1&lt;/code&gt; 被转换为整型 &lt;code&gt;10&lt;/code&gt;，最后赋值给整型变量 &lt;code&gt;b&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】隐式的数据类型转换&lt;a href=&quot;#三隐式的数据类型转换&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：类型转换可以是隐式的，由编译器自动执行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码示例解析&lt;/strong&gt;：
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;, b&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt; c &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;4.8&lt;/span&gt;&lt;span&gt;, d&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;b &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; c &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; d ;&lt;/span&gt;&lt;span&gt;   // b存入右边表达式的计算 结果为10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;计算过程&lt;/strong&gt;：&lt;code&gt;a + c + d&lt;/code&gt; 的结果依然是浮点型 &lt;code&gt;10.1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;但在赋值给整型变量 &lt;code&gt;b&lt;/code&gt; 时，编译器会自动将 &lt;code&gt;10.1&lt;/code&gt;（float）隐式转换为 &lt;code&gt;10&lt;/code&gt;（int），然后存入 &lt;code&gt;b&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这是关于C语言数据类型转换的进阶内容，主要讲解了&lt;strong&gt;整数提升（Integer Promotion）&lt;strong&gt;和&lt;/strong&gt;常用算术转换&lt;/strong&gt;的底层规则。这也是理解C语言表达式求值顺序和类型的核心。&lt;/p&gt;&lt;p&gt;结合你之前的学习脉络，我为你整理成结构化笔记，并补全了图片中未展示完整的部分：&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】整数提升&lt;a href=&quot;#四整数提升&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;概念&lt;/strong&gt;：整数提升是指把&lt;strong&gt;小于 &lt;code&gt;int&lt;/code&gt; 或 &lt;code&gt;unsigned int&lt;/code&gt;&lt;/strong&gt; 的整数类型（如 &lt;code&gt;char&lt;/code&gt;、&lt;code&gt;short&lt;/code&gt;、&lt;code&gt;bool&lt;/code&gt;、位域等）转换为 &lt;code&gt;int&lt;/code&gt; 或 &lt;code&gt;unsigned int&lt;/code&gt; 的过程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;常用算术转换&lt;/strong&gt;：是隐式地把值强制转换为相同的类型。编译器在处理算术运算时，遵循以下两步：
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;首先执行整数提升&lt;/strong&gt;（把小的整型提升为 &lt;code&gt;int&lt;/code&gt; 或 &lt;code&gt;unsigned int&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;如果操作数类型不同，则它们会被转换为&lt;strong&gt;下列层次中出现的最高层次的类型&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;C语言标准规定的算术转换层次（从低到高）依次为：
&lt;code&gt;int&lt;/code&gt; -&amp;gt; &lt;code&gt;unsigned int&lt;/code&gt; -&amp;gt; &lt;code&gt;long&lt;/code&gt; -&amp;gt; &lt;code&gt;unsigned long&lt;/code&gt; -&amp;gt; &lt;code&gt;long long&lt;/code&gt; -&amp;gt; &lt;code&gt;unsigned long long&lt;/code&gt; -&amp;gt; &lt;code&gt;float&lt;/code&gt; -&amp;gt; &lt;code&gt;double&lt;/code&gt; -&amp;gt; &lt;code&gt;long double&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言算术运算符</title><link>https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/60%E7%AE%97%E6%95%B0%E8%BF%90%E7%AE%97%E7%AC%A6/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/60%E7%AE%97%E6%95%B0%E8%BF%90%E7%AE%97%E7%AC%A6/</guid><description>学习 C 语言表达式、算术运算符、整数除法和浮点除法的基本规则。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】表达式&lt;a href=&quot;#一表达式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：所谓表达式是指由运算符、运算量和标点符号组成的有效序列，是用来说明一个计算过程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;表达式语句&lt;/strong&gt;：表达式可以独立形成语句，该语句称为表达式语句。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一般形式&lt;/strong&gt;：
&lt;code&gt;&amp;lt;表达式&amp;gt; ;&lt;/code&gt; （注意末尾必须有分号）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】算术运算符&lt;a href=&quot;#二算术运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算符&lt;/th&gt;&lt;th&gt;功能说明&lt;/th&gt;&lt;th&gt;举例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;+&lt;/code&gt;&lt;/td&gt;&lt;td&gt;加，一目取正（一元正号）&lt;/td&gt;&lt;td&gt;&lt;code&gt;a+b&lt;/code&gt;, &lt;code&gt;+a&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;&lt;td&gt;减，一目取负（一元负号）&lt;/td&gt;&lt;td&gt;&lt;code&gt;a-b&lt;/code&gt;, &lt;code&gt;-a&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;乘法&lt;/td&gt;&lt;td&gt;&lt;code&gt;a*b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;除法&lt;/td&gt;&lt;td&gt;&lt;code&gt;a/b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%&lt;/code&gt;&lt;/td&gt;&lt;td&gt;取模或求余&lt;/td&gt;&lt;td&gt;&lt;code&gt;a%b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;++&lt;/code&gt;&lt;/td&gt;&lt;td&gt;增1（自增）&lt;/td&gt;&lt;td&gt;&lt;code&gt;a++&lt;/code&gt;, &lt;code&gt;++b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;--&lt;/code&gt;&lt;/td&gt;&lt;td&gt;减1（自减） &lt;em&gt;(被UI遮挡)&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;a--&lt;/code&gt;, &lt;code&gt;--b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;这张图片紧接着上一节的算术运算符，专门针对最容易出错的&lt;strong&gt;除法运算符 &lt;code&gt;/&lt;/code&gt;&lt;/strong&gt; 和&lt;strong&gt;取模运算符 &lt;code&gt;%&lt;/code&gt;&lt;/strong&gt; 进行了详细区分。这是C语言初学者最容易踩坑的地方，也是考试必考的核心点。&lt;/p&gt;&lt;p&gt;按照惯例，我为你整理了结构化笔记，并补充了极其重要的实战避坑指南：&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】整数除法和实数除法&lt;a href=&quot;#三整数除法和实数除法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;C语言的除法运算符分为整数除法和实数除法。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;【1】整数除法&lt;a href=&quot;#1整数除法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;求整 &lt;code&gt;/&lt;/code&gt;&lt;/strong&gt;：得到两个整数相除的&lt;strong&gt;整数部分&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;求余 &lt;code&gt;%&lt;/code&gt;&lt;/strong&gt;：得到两个整数相除的&lt;strong&gt;余数部分&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;举例&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1/2&lt;/code&gt; 的结果为 &lt;code&gt;0&lt;/code&gt; （小数部分被直接丢弃）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1%2&lt;/code&gt; 的结果为 &lt;code&gt;1&lt;/code&gt; （1除以2，商0余1）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】实数除法&lt;a href=&quot;#2实数除法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;除法 &lt;code&gt;/&lt;/code&gt;&lt;/strong&gt;：得到两个实数相除的结果为一个&lt;strong&gt;实数&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;举例&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1.0/2&lt;/code&gt; 的结果为 &lt;code&gt;0.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这张图片是一个具体的实战练习题（练习9），通过实际代码运行来验证上一节关于&lt;strong&gt;整数除法和实数除法&lt;/strong&gt;的理论知识。&lt;/p&gt;&lt;p&gt;按照惯例，我为你整理了结构化笔记，并针对代码中的细节和考点进行深度解析：&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】练习&lt;a href=&quot;#四练习&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;【1】除法运算符&lt;a href=&quot;#1除法运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;题目&lt;/strong&gt;：计算 &lt;code&gt;1/2&lt;/code&gt;、&lt;code&gt;1.0/2&lt;/code&gt;、&lt;code&gt;1%2&lt;/code&gt; 的结果分别是多少？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;源代码&lt;/strong&gt;：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;argc&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;argv&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;1/2 =&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;1.0/2=&lt;/span&gt;&lt;span&gt;%f&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1.0&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;1&lt;/span&gt;&lt;span&gt;%%&lt;/span&gt;&lt;span&gt;2 =&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;运行结果&lt;/strong&gt;：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1/2=0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1%2=1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1.0/2=0.500000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这张图片详细讲解了C语言中极其重要且容易出错的&lt;strong&gt;自增（&lt;code&gt;++&lt;/code&gt;）与自减（&lt;code&gt;--&lt;/code&gt;）运算符&lt;/strong&gt;。图片通过定义和七行代码示例，精准地展示了“前缀（先算后用）”和“后缀（先用后算）”的区别。&lt;/p&gt;&lt;p&gt;按照惯例，我为你整理了结构化笔记，并对代码示例进行了深度拆解，最后补充了考试必考的避坑指南：&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【2】自增自减运算符&lt;a href=&quot;#2自增自减运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;（1）自增运算符&lt;a href=&quot;#1自增运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i++&lt;/code&gt;：表示 &lt;code&gt;i&lt;/code&gt; 的值&lt;strong&gt;先参与运算&lt;/strong&gt;，最后再自增1（后缀）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;++i&lt;/code&gt;：表示 &lt;code&gt;i&lt;/code&gt; 的值&lt;strong&gt;先自增1&lt;/strong&gt;，之后再参与运算（前缀）。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;（2）自减运算符&lt;a href=&quot;#2自减运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i--&lt;/code&gt;：表示 &lt;code&gt;i&lt;/code&gt; 的值&lt;strong&gt;先参与运算&lt;/strong&gt;，最后再自减1（后缀）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--i&lt;/code&gt;：表示 &lt;code&gt;i&lt;/code&gt; 的值&lt;strong&gt;先自减1&lt;/strong&gt;，之后再参与运算（前缀）。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;假设每一行代码都从头执行，即初始值始终是 &lt;code&gt;x=5, y=9&lt;/code&gt;&lt;/strong&gt;。如果连续执行而不重置变量，结果会不同。&lt;/p&gt;&lt;p&gt;我们按照图片给出的初始值 &lt;code&gt;x=5, y=9&lt;/code&gt;，逐行拆解：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;z = ++x;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;前缀：&lt;code&gt;x&lt;/code&gt;先加1变成6，然后把6赋给&lt;code&gt;z&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;结果：&lt;code&gt;z=6&lt;/code&gt;，&lt;code&gt;x=6&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z = x++;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;后缀：先把&lt;code&gt;x&lt;/code&gt;当前值5赋给&lt;code&gt;z&lt;/code&gt;，然后&lt;code&gt;x&lt;/code&gt;再加1变成6。&lt;/li&gt;
&lt;li&gt;结果：&lt;code&gt;z=5&lt;/code&gt;，&lt;code&gt;x=6&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z = --x;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;前缀：&lt;code&gt;x&lt;/code&gt;先减1变成4，然后把4赋给&lt;code&gt;z&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;结果：&lt;code&gt;z=4&lt;/code&gt;，&lt;code&gt;x=4&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z = x--;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;后缀：先把&lt;code&gt;x&lt;/code&gt;当前值5赋给&lt;code&gt;z&lt;/code&gt;，然后&lt;code&gt;x&lt;/code&gt;再减1变成4。&lt;/li&gt;
&lt;li&gt;结果：&lt;code&gt;z=5&lt;/code&gt;，&lt;code&gt;x=4&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z = ++x+y++;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;前缀+后缀混合：&lt;code&gt;++x&lt;/code&gt;使&lt;code&gt;x&lt;/code&gt;变成6（取6参与运算），&lt;code&gt;y++&lt;/code&gt;取&lt;code&gt;y&lt;/code&gt;当前值9参与运算（然后&lt;code&gt;y&lt;/code&gt;变成10）。&lt;code&gt;z = 6 + 9 = 15&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;结果：&lt;code&gt;z=15&lt;/code&gt;，&lt;code&gt;x=6&lt;/code&gt;，&lt;code&gt;y=10&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z = --x+y++;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--x&lt;/code&gt;使&lt;code&gt;x&lt;/code&gt;变成4（取4参与运算），&lt;code&gt;y++&lt;/code&gt;取&lt;code&gt;y&lt;/code&gt;当前值9参与运算（然后&lt;code&gt;y&lt;/code&gt;变成10）。&lt;code&gt;z = 4 + 9 = 13&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;结果：&lt;code&gt;z=13&lt;/code&gt;，&lt;code&gt;x=4&lt;/code&gt;，&lt;code&gt;y=10&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z = ++x+y--;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;++x&lt;/code&gt;使&lt;code&gt;x&lt;/code&gt;变成6（取6参与运算），&lt;code&gt;y--&lt;/code&gt;取&lt;code&gt;y&lt;/code&gt;当前值9参与运算（然后&lt;code&gt;y&lt;/code&gt;变成8）。&lt;code&gt;z = 6 + 9 = 15&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;结果：&lt;code&gt;z=15&lt;/code&gt;，&lt;code&gt;x=6&lt;/code&gt;，&lt;code&gt;y=8&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;【3】算术运算符&lt;a href=&quot;#3算术运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;源代码&lt;/strong&gt;（基于输出结果还原，利用重置变量来独立验证每一行的逻辑）：
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x, y, z;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 第一行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;; y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;; z &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;x;&lt;/span&gt;&lt;span&gt;      // 前缀：x先加1变6，z=6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;z=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, x=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, z, x);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 第二行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;; y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;; z &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;      // 后缀：z=5，x再加1变6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;z=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, x=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, z, x);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 第三行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;; y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;; z &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;x;&lt;/span&gt;&lt;span&gt;      // 前缀：x先减1变4，z=4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;z=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, x=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, z, x);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 第四行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;; y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;; z &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;      // 后缀：z=5，x再减1变4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;z=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, x=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, z, x);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 第五行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;; y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;; z &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; // ++x为6，y++取9，z=15；运算后x=6, y=10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;z=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, x=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, y=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, z, x, y);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 第六行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;; y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;; z &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; // --x为4，y++取9，z=13；运算后x=4, y=10&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;z=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, x=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, y=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, z, x, y);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 第七行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;; y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;; z &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;x &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; // ++x为6，y--取9，z=15；运算后x=6, y=8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;z=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, x=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;, y=&lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, z, x, y);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>C 语言关系与逻辑运算符</title><link>https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/70%E5%85%B3%E7%B3%BB%E4%B8%8E%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97%E7%AC%A6/</link><guid isPermaLink="true">https://firefly.cuteleaf.cn/posts/language/c/20c%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80/70%E5%85%B3%E7%B3%BB%E4%B8%8E%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97%E7%AC%A6/</guid><description>学习 C 语言的关系运算符、逻辑运算符、短路求值和条件判断规则。</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;【一】关系运算符&lt;a href=&quot;#一关系运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算符&lt;/th&gt;&lt;th&gt;功能说明&lt;/th&gt;&lt;th&gt;举例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;大于&lt;/td&gt;&lt;td&gt;&lt;code&gt;a &amp;gt; b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;gt;=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;大于等于&lt;/td&gt;&lt;td&gt;&lt;code&gt;a &amp;gt;= 5&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;小于&lt;/td&gt;&lt;td&gt;&lt;code&gt;3 &amp;lt; x&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;lt;=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;小于等于&lt;/td&gt;&lt;td&gt;&lt;code&gt;x &amp;lt;= y + 1&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;==&lt;/code&gt;&lt;/td&gt;&lt;td&gt;等于&lt;/td&gt;&lt;td&gt;&lt;code&gt;x + 1 == 0&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;!=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;不等于&lt;/td&gt;&lt;td&gt;&lt;code&gt;c != &apos;\0&apos;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;
&lt;li&gt;真为1，假为0，非零为真，0为假&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, b&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;(b&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;        // 结果值为0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(a &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; b&lt;/span&gt;&lt;span&gt;     // 结果值为1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt;(b&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;       // 结果值为1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;          // 结果值为1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(a&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;       // 结果值为0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;a &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; (b&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;     // 结果值为0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【二】逻辑运算符&lt;a href=&quot;#二逻辑运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算符&lt;/th&gt;&lt;th&gt;功能说明&lt;/th&gt;&lt;th&gt;举例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;!&lt;/code&gt;&lt;/td&gt;&lt;td&gt;逻辑反（非）&lt;/td&gt;&lt;td&gt;&lt;code&gt;!(x == 0)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;逻辑与&lt;/td&gt;&lt;td&gt;&lt;code&gt;x &amp;gt; 0 &amp;amp;&amp;amp; x &amp;lt; 100&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;`&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;`&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【三】逻辑非运算符&lt;a href=&quot;#三逻辑非运算符&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;逻辑非 &lt;code&gt;!&lt;/code&gt; 运算符的运算律如下（一元运算符）：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算量&lt;/th&gt;&lt;th&gt;结果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;em&gt;结合我们上一节学的“非零为真，0为假”，可以推导出：&lt;code&gt;!非0&lt;/code&gt; = &lt;code&gt;0&lt;/code&gt;；&lt;code&gt;!0&lt;/code&gt; = &lt;code&gt;1&lt;/code&gt;。&lt;/em&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; k&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt; (k &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;      // 结果值为1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt; ((k&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; // 结果值为0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt; (k&lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;      // 结果值为1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【四】逻辑与运算符 (&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;)&lt;a href=&quot;#四逻辑与运算符-&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;逻辑与 &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; 运算符的运算规律如下（二元运算符）：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;左运算量&lt;/th&gt;&lt;th&gt;右运算量&lt;/th&gt;&lt;th&gt;结果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;em&gt;提炼核心规则&lt;/em&gt;：&lt;strong&gt;全真才真，一假即假&lt;/strong&gt;。只有当左右两边都为“真”（非0）时，整个表达式的结果才为“真”（1）。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【五】逻辑与的短路特性&lt;a href=&quot;#五逻辑与的短路特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：如果第一个操作数是 &lt;code&gt;false&lt;/code&gt;（假，即0），那么无论第二个操作数是什么值，结果也不可能等于 &lt;code&gt;true&lt;/code&gt;（真，即1）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;形式&lt;/strong&gt;：&lt;code&gt;(表达式1) &amp;amp;&amp;amp; (表达式2)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;规则&lt;/strong&gt;：如果表达式1为假，则表达式2&lt;strong&gt;不会进行运算&lt;/strong&gt;，即表达式2“被短路”。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(x&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt;(y&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;) ;&lt;/span&gt;&lt;span&gt;   // 结果为假 ，运算后 x=5, y=6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【六】逻辑或运算符 (&lt;code&gt;||&lt;/code&gt;)&lt;a href=&quot;#六逻辑或运算符-&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;逻辑或 &lt;code&gt;||&lt;/code&gt; 运算符的运算规律如下（二元运算符）：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;左运算量&lt;/th&gt;&lt;th&gt;右运算量&lt;/th&gt;&lt;th&gt;结果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;em&gt;提炼核心规则&lt;/em&gt;：&lt;strong&gt;有真即真，全假才假&lt;/strong&gt;。只要左右两边有一个为“真”（非0），整个表达式的结果就为“真”（1）。只有当两边都为“假”（0）时，结果才为“假”（0）。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;【七】逻辑或的短路特性&lt;a href=&quot;#七逻辑或的短路特性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：如果第一个操作数是 &lt;code&gt;true&lt;/code&gt;（真，非0），第二个操作符就不会再被求值了。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;形式&lt;/strong&gt;：&lt;code&gt;(表达式1) || (表达式2)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;规则&lt;/strong&gt;：如果表达式1为真，则表达式2&lt;strong&gt;不会进行运算&lt;/strong&gt;，即表达式2“被短路”。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;, y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt; ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;(x&lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt;(y&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;) ;&lt;/span&gt;&lt;span&gt;   // 结果为真 ，运算后 x=5, y=6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;初始状态：&lt;code&gt;x = 5&lt;/code&gt;，&lt;code&gt;y = 6&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;计算左侧 &lt;code&gt;(x &amp;lt;= 5)&lt;/code&gt;：&lt;code&gt;5 &amp;lt;= 5&lt;/code&gt; 为真，返回 &lt;code&gt;1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;触发短路&lt;/strong&gt;：因为 &lt;code&gt;||&lt;/code&gt; 的左侧为 &lt;code&gt;1&lt;/code&gt;（真），整个 &lt;code&gt;||&lt;/code&gt; 表达式的结果已确定为真（1）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跳过右侧&lt;/strong&gt;：编译器&lt;strong&gt;直接跳过&lt;/strong&gt;右侧的 &lt;code&gt;(y++)&lt;/code&gt;，根本不执行。&lt;/li&gt;
&lt;li&gt;最终结果：整个表达式为真（1），&lt;code&gt;x&lt;/code&gt; 依然是5，&lt;code&gt;y&lt;/code&gt; 依然是6。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;</content:encoded></item></channel></rss>