【C语言基础】常量、选择结构与运算符全解析
前言C语言的选择结构if-else和常量是编程中最基础也最重要的概念之一。本文将结合代码示例带你系统掌握C语言中的常量类型、选择结构、关系与逻辑运算符并通过多个实战案例巩固理解。一、常量C语言中的常量有多种定义方式每种方式各有特点1. 字面常量直接写在代码中的数值或字符无需声明。// 整数字面常量 12, 23, 34 // 字符字面常量单引号 A, b, 9 // 字符串字面常量双引号 hello world2. const 修饰的常量将变量声明为只读后续不能再赋值。const int a 10; // a 20; // 编译错误const 变量不可修改3. #define 定义的标识符常量宏常量预处理阶段进行文本替换不占内存空间。#define MAX 100 // 使用 MAX 的地方会被替换为 1004. 枚举常量批量定义一组命名常量默认从 0 开始递增。enum color { red, // 0 blue, // 1 green // 2 };注意事项使用char类型时单引号引单个字符双引号引字符串。如果在算术运算中两边的数据类型不同则运算结果的数据类型与操作数中具有较大范围的操作数相同。二、强制类型转换当需要将一种数据类型转换为另一种时可以使用强制类型转换。格式目标变量 (目标数据类型)(表达式)int c; c (int)(12.3 * 12 40); // 将浮点运算结果强制转换为整型三、基础运算示例功能基础加法示例演示变量定义、赋值和基本运算。#include stdio.h int main() { int a, b; a 5; b 6; int c; c a b; // 给 c 赋值为 a b 给 c 赋值 5 6 printf(hello world!\n %d %d %d, a, b, c); return 0; }功能输入输出加法示例演示scanf读取用户输入。#include stdio.h int main() { int a, b; a 5; // 赋值 b 6; printf(请输入两个数); scanf(%d %d, a, b); // 读取整型数字并将值存储到变量 a 和 b 的地址中 int c; c a b; printf(结果是%d %d %d, a, b, c); return 0; }注意判断结果返回非 0 为真返回 0 为假。四、选择结构之 if 语句1. 单分支 if当表达式为真时执行语句块否则跳过。当语句块只有一句时可以省略{}。if (表达式) { 语句块; } // 或者单行时可省略大括号 if (表达式) 语句块;2. 双分支 if-else表达式为真执行语句块1否则执行语句块2。if (表达式) { 语句块1; } else { 语句块2; }3. 多分支 if-else if-else从上往下依次判断一旦匹配成功就执行对应语句块并跳过后续所有分支。if (表达式1) { 语句块1; } else if (表达式2) { 语句块2; } // ... else if (表达式n) { 语句块n; } else { 语句块n1; // 以上条件都不满足时执行 }五、关系运算符运算符含义等于不等于大于等于小于等于小于大于六、逻辑运算符运算符含义说明逻辑与两边都为非0结果才为1短路特性左边为0时右边不再计算||逻辑或任意一边为非0结果就为1短路特性左边为1时右边不再计算!逻辑非操作数为非0结果为0操作数为0结果为1七、实战代码示例示例1if-else 条件判断功能演示基本的条件分支结构比较两个数的大小。#include stdio.h int main() { int a, b; a 5; b 6; printf(请输入两个数); scanf(%d %d, a, b); if (a b) // if 语句从上往下执行当遇到符合条件的语句将进入此语句并且跳过之后的所有 else if 和 else 语句 { printf(大的数是%d, a); } else { printf(大的数是%d, b); } return 0; }示例2使用临时变量存储最大值功能演示使用临时变量max来存储比较结果。#include stdio.h int main() { int a, b; a 5; // 赋值 b 6; printf(请输入两个数); scanf(%d %d, a, b); int max a; // 提前赋值方便作比较 if (b max) // 如果 b 比原先的 max 大那 b 就是新的 max { max b; } printf(大的数是%d, max); return 0; }示例3数据类型演示功能展示 C 语言中不同数据类型的定义和使用。#include stdio.h int main() { int a; a 2; printf(%d \n, a); char b; // char 类型本质属于整型大家庭先有数字再从 ASCII 表中查找相应的字符 b 2; // char 类型赋值 (字符不是数字) 要打 符号否则打印数字 printf(%c \n, b); // 打印字符 float c; // 定义浮点型参数 c 3.14f; // f 用于强调是 float 类型以免 c 转换到 double 类型float 与 double 区别在于 double 的范围更大 printf(%f \n, c); double e; e 3.14; printf(%lf \n, e); // double 相当于 long float long long int num; // 定义长整型与 int 相比其范围更大 num 2025233503401; printf(%lld \n, num); // int 打印用 %dlong long int 打印用 %lld return 0; }示例4字符与 ASCII 码功能演示字符和数字之间的转换关系。#include stdio.h int main() { char i; i 65; printf(字母是%c 数字是%d \n, i, i); return 0; }示例5三重判断if-else if-else功能演示多分支结构比较两个数的大小关系。#include stdio.h int main() { int i 3, j 4; if (i j) // 三重判断从上往下依次判断 { printf(大的数是 %d, i); } else if (j i) { printf(大的数是 %d, j); } else { printf(两个数相等); } return 0; }示例6三个数找最大值方法1临时变量逐步比较功能使用临时变量max逐步与每个数比较找出最大值。#include stdio.h int main() { int a, b, c; scanf(%d %d %d, a, b, c); int max a; if (a max) { max a; } if (b max) { max b; } if (c max) { max c; } printf(最大者是%d, max); return 0; }示例7三个数找最大值方法2逻辑运算符直接比较功能使用逻辑运算符直接判断每个数是否为最大值。#include stdio.h int main() { int a, b, c; scanf(%d %d %d, a, b, c); if (a b a c) // 操作符要求两边同时为真才表示真否则为假从左往右依次判断一旦左边判断错误右边将不再进行判断 { printf(最大者是%d, a); } else if (b a b c) { printf(最大者是%d, b); } else if (c a c b) { printf(最大者是%d, c); } return 0; }示例8大小写转换功能演示利用 ASCII 码差值实现字符大小写互转。#include stdio.h int main() { char i; scanf(%c, i); if (i a i z) { // 小写转大写大写 ASCII 码表 (65~90)小写 ASCII 码表 (97~122) printf(%c, i - (a - A)); } else if (i A i Z) { // 大写转小写 printf(%c, i (a - A)); } else { printf(%c, i); } return 0; }总结本文系统梳理了C语言中的核心基础知识点常量字面常量、const常量、宏常量、枚举常量四种方式各有适用场景。选择结构if、if-else、if-else if-else 三种分支形式灵活应对不同判断需求。运算符关系运算符返回 0/1逻辑运算符具备短路特性理解它们对写出高效代码至关重要。ASCII 码字符本质是整数掌握 ASCII 码规律可以轻松实现大小写转换等操作。学习建议多动手敲代码尝试修改示例中的条件和数值观察输出变化加深理解

相关新闻

告别工具切换:一站式 API 调试,IDEA 插件 Cool Request 完全上手指南

告别工具切换:一站式 API 调试,IDEA 插件 Cool Request 完全上手指南

告别工具切换:一站式 API 调试,IDEA 插件 Cool Request 完全上手指南 【免费下载链接】cool-request IDEA API、Java Method debug tools 项目地址: https://gitcode.com/gh_mirrors/co/cool-request 下午三点,联调群里消息不断&#…

2026/10/17 15:40:32 阅读更多 →
彻底解决eNSP启动卡在#号:从原理到实战的完整故障排除指南

彻底解决eNSP启动卡在#号:从原理到实战的完整故障排除指南

1. 项目概述:当eNSP启动卡在“#”号时 如果你是一名网络工程师,或者正在学习华为网络技术,那么eNSP(Enterprise Network Simulation Platform)这个软件对你来说一定不陌生。它几乎是每个网工学习和实验的“标配”&…

2026/10/17 21:08:59 阅读更多 →
终极指南:用浏览器插件访问微信网页版,三步免安装登录

终极指南:用浏览器插件访问微信网页版,三步免安装登录

终极指南:用浏览器插件访问微信网页版,三步免安装登录 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 这篇文章解决什么问题 …

2026/10/18 6:17:42 阅读更多 →

最新新闻

大麦网自动抢票脚本:从配置到下单的完整使用教程

大麦网自动抢票脚本:从配置到下单的完整使用教程

大麦网自动抢票脚本:从配置到下单的完整使用教程 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 开票倒计时归零那一秒,页面已弹出"缺货登记&quo…

2026/10/18 23:40:36 阅读更多 →
Vosk C API 编译避坑指南:Linux/ARM/Windows 三平台源码构建实战

Vosk C API 编译避坑指南:Linux/ARM/Windows 三平台源码构建实战

简介:本资源为已编译完成的Vosk语音识别C语言调用库,专为嵌入式开发、边缘计算及低功耗平台(如树莓派、Windows桌面应用)开发者设计,解决C项目中集成离线语音识别时需自行编译Vosk源码的复杂问题。压缩包共6个文件&…

2026/10/18 23:40:36 阅读更多 →
如何把加密视频真正存到本地:res-downloader 抓包下载与解密实战

如何把加密视频真正存到本地:res-downloader 抓包下载与解密实战

如何把加密视频真正存到本地:res-downloader 抓包下载与解密实战 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

2026/10/18 23:40:36 阅读更多 →
Java医药进销存系统:Spring Boot+MyBatis-Plus实战全链路

Java医药进销存系统:Spring Boot+MyBatis-Plus实战全链路

简介:这是一套面向计算机专业本科生毕业设计与Java Web开发初学者的医药行业进销存管理系统源码,聚焦药品采购、销售、库存三大核心业务场景,助力药店、医院药房及小型批发商实现业务流程数字化。资源共944个文件,涵盖105个Java后…

2026/10/18 23:40:36 阅读更多 →
皮尔逊III型曲线拟合实战:从实测流量到设计洪水频率分析

皮尔逊III型曲线拟合实战:从实测流量到设计洪水频率分析

简介:一份用于皮尔逊III型曲线拟合与绘图的MATLAB代码包,面向水文学、统计学及工程防灾领域的研究人员、学生和工程师,解决流量、降雨等自然数据的频率分析问题。压缩包共三个文件,均为MATLAB脚本,整体大小仅3KB&#…

2026/10/18 23:40:36 阅读更多 →
三则AI新闻揭示应用临界点:轻量模型、免费旗舰与团队回迁

三则AI新闻揭示应用临界点:轻量模型、免费旗舰与团队回迁

10月8日早上,我的朋友圈和几个技术群几乎同时被三则AI新闻刷屏:一家主流模型厂商发布了新的轻量快速模型H 5.5,另一家巨头把第六代旗舰模型向普通用户免费开放,还有一个此前把部分团队搬到外地的智能体产品团队,宣布要…

2026/10/18 23:39:35 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/10/18 12:16:16 阅读更多 →