学嵌入式C语言,看这一篇就够了(6)

news/2025/3/21 22:29:57/文章来源:https://www.cnblogs.com/luckyTS/p/18785911

image

C语言的语句和块

C语言标准中一共提供6种语句
注意:C语言中的语句要指明执行的操作,并且没有特殊情况,语句是按照顺序执行的

image

一般把实现某些功能的语句整合在一起,构成一个语法单元,C语言标准的语法单元也被称为块,也被称为块语句

复合语句

复合语句可以限制语句的作用范围,但是一般情况复合语句很少单独使用,都是和其他语句一起使用使用

image

{ }内就是复合语句

表达式语句

C语言程序一般使用表达式来实现某种操作,表达式是由一组操作符以及操作数组成,目的是实现某种特定的操作

image
image

选择语句

image

(1)针对一种情况

C语言标准中提供了一种 if() 语句,if是C语言的关键字之一,具有“如果”的含义,可以看到if()语句需要一个控制表达式,当表达式为真时,则会执行statement,如果表达式为假,则不执行statement

image
image
image

(2)针对两种情况

C语言中提供了if()... else结构的语句,else是C语言关键字之一,具有“否则”,当if语句的表达式不成立时,则会执行else对应的语句

image

if ( 表达式 )
{块语句1;	//当表达式为真,则执行块语句1
}
else
{块语句2;	//当表达式为假,则执行块语句2
}

(3)针对多种情况

C语言标准提供了switch语句,switch也是C语言关键字之一,用于表示多分支选择,需要配合标签语句一起用:

switch( 表达式 )  //表达式结果必须是整型
{case  常量表达式1  :  待执行的语句1case  常量表达式2  :  待执行的语句2case  常量表达式3  :  待执行的语句3case  常量表达式4  :  待执行的语句4default			  :  待执行的语句n ---->当所有的case语句都不满足时才会执行!!!
}

标签语句

C语言标准中提供了3种标签语句,其中使用频率较高是case标签和default标签,case和default都是C语言的关键字之一,case具有匹配的含义,default具有默认的含义

image

case  常量表达式1  :  待执行的语句1
case  常量表达式2  :  待执行的语句2
case  常量表达式3  :  待执行的语句3
case  常量表达式4  :  待执行的语句4
default			  :  待执行的语句n   ----->当所有的case语句都不满足时才会执行!!!
注意:case标签的常量表达式的结果必须是整型常量,并且case标签必须是互斥的(不能出现重复的情况,会导致二义性)注意:case标签语句和default标签语句只能在switch语句中使用,对于普通的标签语句是可以在跳转语句中使用的注意:switch语句应该结合break语句,目的是利用break语句终止switch语句,避免多个标签都被执行

image
image

switch( 表达式 )  //表达式结果必须是整型
{case  常量表达式1  :  { 待执行的语句1 ..... }  break;case  常量表达式2  :  { 待执行的语句2 ..... }  break;case  常量表达式3  :  { 待执行的语句3 ..... }  break;case  常量表达式4  :  { 待执行的语句4 ..... }  break;default			  :  待执行的语句n ---->当所有的case语句都不满足时才会执行!!!
}

跳转语句

C语言标准中提供了四种跳转语句:goto语句、continue语句、break语句、return语句

image
image
image
image
image
image

迭代语句

C语言标准中提供了3种迭代语句给用户完成重复性的工作,迭代也可以理解为循环,可以重复执行某个代码块

image

可以看到,C语言标准中提供了while()语句、do ...while()语句、for()语句,每种语句都具有控制表达式,当控制表达式的值不等于0则会重复执行循环体,当控制表达式的值等于0时终止循环体的执行

(1)while()语句

image
image

(2)do...while()语句

image
image

(3)for()语句

image

循环语句内部的循环体一般都需要结合break语句、continue语句,都属于跳转语句!!!!!!

image

Question1:
image

Answer1:

A. a += (a++):+= 左边 a 是合法左值,a++ 先取值参与运算再自增,语法正确
B. a += (++a):++a 先自增再取值,a 作为左值参与 +=,语法正确
C. (a++) += a:a++ 是右值(临时值),不能作为复合赋值的左值,语法错误
D. (++a) += (a++):++a 是左值,可作为 += 左操作数,语法正确

Question2:
image

Answer2:

#include <stdio.h>// 判断b是否在a、c之间
int check_between(int a, int b, int c) {int min_val = (a < c) ? a : c;int max_val = (a > c) ? a : c;return min_val < b && b < max_val;
}int main() {int a = 1, b = 3, c = 5;  // 可修改a、b、c的值测试int result = check_between(a, b, c);if (result) {printf("b在a和c之间\n");} else {printf("b不在a和c之间\n");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902681.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3375 【模板】KMP

P3375 【模板】KMP 题目描述 给出两个字符串 \(s_1\) 和 \(s_2\),若 \(s_1\) 的区间 \([l, r]\) 子串与 \(s_2\) 完全相同,则称 \(s_2\) 在 \(s_1\) 中出现了,其出现位置为 \(l\)。 现在请你求出 \(s_2\) 在 \(s_1\) 中所有出现的位置。 定义一个字符串 \(s\) 的 border 为 …

Cursor 使用教程

目录核心功能TabAICHATCOMPOSER@DocsWebGitNotepadCodebase技巧和思路如果Cursor乱改代码怎么办? 核心功能 Tab 这个是Cursor最为强大的功能,使用也很简单,在编写代码的时候,如果出现了灰色的提示词,直接按Tab就可以自动补全了最后的灰色的就是提示词 Cursor的光标预测也很…

C语言学习打卡第二天(2025.3.21)

时间有点少,今天也没学多少,只把指针基础概念学了一下(例如指针变量,下标法等),题也只做了三道。

3.21 学习记录

设计科技查询手机端系统,实现了政策关键字进行模糊匹配查询,点击下方的政策名称,可以打开新窗口,显示政策全文,实现分页查询,分类查询 采用springboot+vue3实现

P8436 【模板】边双连通分量

P8436 【模板】边双连通分量 题目描述 对于一个 \(n\) 个节点 \(m\) 条无向边的图,请输出其边双连通分量的个数,并且输出每个边双连通分量。 输入格式 第一行,两个整数 \(n\) 和 \(m\)。 接下来 \(m\) 行,每行两个整数 \(u, v\),表示一条无向边。 不保证图为简单图,图中可…

SvelteKit 最新中文文档教程(8)—— 部署 Node 服务端

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

第四篇:本地私有化部署大模型(Ollama、vLLM、LMDeploy)

魔塔社区平台介绍 量化:将高精度数值转换成低精度表示的过程(通常用于减少模型的内存和提高推理速度) Ollama部署大模型 linux安装miniconda# 下载 Miniconda 安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 运行安装脚本 bash…

用Adobe Illustrator编辑ArcGIS地图的方法

本文介绍在ArcGIS下属的ArcMap软件中,将绘制好的地图导出为.ai或者.eps格式文件,并在Adobe Illustrator软件中进一步编辑地图,并最终导出为图片格式的结果文件的方法~本文介绍在ArcGIS下属的ArcMap软件中,将绘制好的地图导出为.ai或者.eps格式文件,并在Adobe Illustrator软…

协议版iM蓝号检测,批量筛选iMessages数据,无痕检测是否开启iMessage服务

一、实现iMessage数据检测的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2…

记录项目调用链路

记录项目调用链路 内容 要理清项目中执行链路的调用关系,可以通过以下工具分类实现,涵盖从代码静态分析到运行时动态追踪的全链路管理:一、代码层调用关系分析 1. 静态代码分析工具PyCallGraph(Python) 生成代码调用关系图,直观展示函数调用链路。 pip install pycallgra…

部署kibana

获取kibana安装包 [root@elk1 ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.28-amd64.deb[root@elk1 ~]# ls kibana-7.17.28-amd64.deb kibana-7.17.28-amd64.deb# 安装kibana [root@elk1 ~]# dpkg -i kibana-7.17.28-amd64.deb 配置kibana [root@elk…

多线程程序设计(四)——Balking

本文摘要了《Java多线程设计模式》一书中提及的 Balking 模式的适用场景,并针对书中例子(若干名称有微调)给出一份 C++ 参考实现及其 UML 逻辑图,也列出与之相关的模式。 ◆ 适用场景 当线程访问的共享数据没有准备好时,就放弃后续的操作。 ◆ 解决方案 在临界区中判断共享…