当前位置: 首页 > news >正文

单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.10语句

1 表达式语句

表达式语句由表达式加上分号“;”组成。其一般形式为:

表达式;

执行表达式语句就是计算表达式的值。例如 c=a+a;

2 函数调用语句

由函数名、实际参数加上分号“;”组成。其一般形式为:

函数名(实际参数表);

例如 printf(“Hello !”);

3 控制语句

控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以下三类:

条件判断语句:if语句、switch语句;

循环执行语句:do while语句、while语句、for语句;

转向语句:break语句、goto语句、continue语句、return语句。

1)条件判断语句
a、 if 语句

if…

if (表达式){语句;} 

其中,当表达式为逻辑表达式时,表达式为真,即执行语句。注意当省略”==“逻辑运算符时,非零的任意数据类型都可视为真

int a;a = 1;if (a == 1){a += 1;}printf("a=%d",a);		//a=2if (a)		//省略了逻辑运算符
{a += 1;
}printf("a=%d",a);		//a=3

当表达式为赋值语句时,则根据赋值结果是否大于0判断是否执行语句。

int a;if (a = 1){a += 1;}printf("a=%d",a);		//a=2if (a = 0){a += 1;}printf("a=%d",a);		//a=0

以上代码虽没有报错,但是会有警告: Using the result of an assignment as a condition without parentheses。

出现这个警号的原因是条件赋值没有加括号。当你特意使用条件赋值时,这个警告可以通过加括号解决,即if((a = 1)) . if((a = 0))

另外一种情况就是。你把逻辑运算符写成了赋值运算符,编译器就是为了纠正这种错误才特意警告。

if … else …

if (表达式) {语句;}    else {语句;}  

if … else if … else …

if (表达式1){语句1;}    else if (表达式2){语句2;} else{语句3;}

<=>

if (表达式1) {语句1;}    else { if(表达式2)  {语句2;} else{语句3;}}

b、switch语句
switch(整型数据(包括枚举型)或字符型数据) {case 常量1: 语句1; break;case 常量2: 语句2; break;case 常量3: 语句3;case 常量4: 语句4; break;//此时常量3执行完语句3后,还要进入到语句4...default: 语句n;(没有default时不符合则跳过)}
2)循环执行语句
a、for(表达式1;表达式2;表达式3){}

表达式1用作变量赋值,表达式2用作判断循环的结束条件,表达式3作为变量值的增减

int sum = 0;for(int i = 0 ; i < 100 ; i++){sum += i + 1;}printf("sum = %d",sum);
b、while(表达式){语句;}

表达式作为循环的结束条件,当表达式的值为非0时,一直执行语句。

int sum = 0;int i = 0;while (i < 100){sum += i + 1;i += 1;}printf("sum = %d",sum);
c、do {语句} while(表达式);

先执行do内的语句,再根据表达式作为循环的结束条件,当表达式的值为非0时,一直执行语句。

int sum = 0;int i = 0;do {sum += i + 1;i += 1;}while (i < 100);printf("sum = %d",sum);
3)转向语句
a、break;

跳出当前循环。常与if配合使用,满足条件时便跳出循环

int sum = 0;int i = 0;while (1){if (i >= 100){break;}sum += i + 1;i += 1;}printf("sum = %d",sum);
b、continue;

结束本次循环而进入下此循环,当使用while作为循环语句时,要注意影响循环结束条件的语句是否被continue跳过了

int sum = 0;int i = 0;while (i < 100){if (i % 2 == 0){i += 1;	//跳过循环前先增加i的值,避免产生死循环continue;}sum += i + 1;i += 1;}printf("sum = %d",sum);
c、return

直接跳出当前函数,并返回值

d、goto

先在程序某处添加标记,如"mark: ",然后使用"goto mark;"跳转

4 复合语句

把多个语句用括号{}括起来组成的一个语句称复合语句。

在程序中应把复合语句看成是单条语句,而不是多条语句。例如:

{ x=y+z; a=b+c; printf(“%d%d”, x, a); }

5 空语句

只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如:while( getchar()!=‘\n’ );

相关文章:

单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.10语句

1 表达式语句 表达式语句由表达式加上分号“;”组成。其一般形式为&#xff1a; 表达式; 执行表达式语句就是计算表达式的值。例如 caa; 2 函数调用语句 由函数名、实际参数加上分号“;”组成。其一般形式为&#xff1a; 函数名(实际参数表); 例如 printf(“Hello !”);…...

Windows 通过服务名称搜索软件启动路径启动软件

文章目录 Windows 通过服务名称搜索软件启动路径启动软件 Windows 通过服务名称搜索软件启动路径启动软件 注意&#xff1a;QQ管家和360安全&#xff0c;正常情况下使用 taskkill 无法停止&#xff0c;因为在安全设置中有个“自保护”&#xff0c;正常情况下会默认勾选上&#…...

如何更高效的写出更健全的代码,一篇文章教会你如何拥有一个良好的代码风格

前言&#xff1a;在平常的写代码的过程中&#xff0c;或多或少的遇到很多奇怪的 bug &#xff0c;尤其是一些大的程序&#xff0c;明明上一部分都是好好的&#xff0c;写下一块的时候突然多几百个 bug 的情况&#xff0c;然后这一块写完了后编译的时候直接傻眼了&#xff0c;看…...

Java如何调用接口API并返回数据(两种方法)

Java如何调用接口API并返回数据&#xff08;两种方法&#xff09; java处理请求接口后返回的json数据-直接处理json字符串 处理思路&#xff1a; 将返回的数据接收到一个String对象中&#xff08;有时候需要自己选择性的取舍接收&#xff09; 再将string转换为JSONObject对象 …...

极狐GitLab 价值流管理之「总时间图」使用指南

本文来源&#xff1a;about.gitlab.com 作者&#xff1a;Haim Snir 译者&#xff1a;极狐(GitLab) 市场部内容团队 对于软件研发管理者来说&#xff0c;了解在整个研发过程中时间都耗费在了哪些地方&#xff0c;是进行交付价值优化的关键洞察。GitLab / 极狐GitLab 新的价值流分…...

Mybatis入门和环境搭建

文章目录 一. Mybatis的简介1. 什么是ORM?2. 什么是持久层&#xff1f;3. Mybatis的作用 二. Mybatis环境搭建1. 搭建一个数据库2. 创建maven项目并导入相关依赖3. Mybatis相关插件安装4. Mybatis.cfg.xml核心配置文件 三. 基于ssm逆向工程的使用1. 配置generatorConfig.xml2.…...

React 全栈体系(二)

第二章 React面向组件编程 一、基本理解和使用 1. 使用React开发者工具调试 2. 效果 2.1 函数式组件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>1_函数式组件</title> </head> &l…...

【Linux】socket编程(二)

目录 前言 TCP通信流程 TCP通信的代码实现 tcp_server.hpp编写 tcp_server.cc服务端的编写 tcp_client.cc客户端的编写 整体代码 前言 上一章我们主要讲解了UDP之间的通信&#xff0c;本章我们将来讲述如何使用TCP来进行网络间通信&#xff0c;主要是使用socket API进…...

七大出海赛道解读,亚马逊云科技为行业客户量身打造解决方案

伴随全球化带来的新机遇和国内市场的进一步趋于饱和&#xff0c;近几年&#xff0c;中国企业出海快速升温&#xff0c;成为了新的创业风口和企业的第二增长曲线。从范围上看&#xff0c;出海市场由近及远&#xff0c;逐步扩张。从传统的东南亚市场&#xff0c;到成熟的北美、欧…...

【Maven教程】(三)基础使用篇:入门使用指南——POM编写、业务代码、测试代码、打包与运行、使用Archetype生成项目骨架~

Maven基础使用篇 1️⃣ 编写 POM2️⃣ 编写业务代码3️⃣ 编写测试代码4️⃣ 打包和运行5️⃣ 使用 Archetype生成项目骨架 1️⃣ 编写 POM 到目前为止&#xff0c;已经大概了解并安装好了Maven环境, 现在&#xff0c;我们开始创建一个最简单的 Hello World 项目。如果你是初次…...

Spring Boot + Spring Data JPA 实现数据库操作的标准示例

环境搭建 本篇使用H2内存数据库演示Spring Data JPA 的使用。 导入JPA和H2的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><…...

JVM——类加载器

回顾一下类加载过程 类加载过程&#xff1a;加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 一个非数组类的加载阶段&#xff08;加载阶段获取类的二进制字节流的动作&#xff09;是可控性最强的阶段&#xff0c;这一步我们可以去完成还可以自定义…...

async/await 编程理解

博客主要是参考 Asynchronous Programming in Rust &#xff0c;会结合简单的例子&#xff0c;对 async 和 await 做比较系统的理解&#xff0c;如何使用 async 和 await 是本节的重点。 async 和 await 主要用来写异步代码&#xff0c;async 声明的代码块实现了 Future 特性&a…...

1. Java基础知识介绍

文章目录 1. Java基础知识介绍1. 简单输入输出1.1 输入1.2 输出 2. 数据类型2.1 基本数据类型2.2 引用数据类型 3. 函数4. 类基础知识5. 小结 1. Java基础知识介绍 1. 简单输入输出 在Java编程中&#xff0c;我们经常需要与用户进行交互&#xff0c;以获取输入并输出结果。Ja…...

基础shell小技巧01

1. 命令替换 shell脚本中最有用的特性之一是可以从命令输出中提取信息并将其赋给变量。把输出赋给变量之后&#xff0c;就可以随意在脚本中使用了。在脚本中处理数据时&#xff0c;这个特性显得尤为方便。 有两种方法可以将命令输出赋给变量。 反引号&#xff08;&#xff0…...

微信小程序--data的赋值与取值的几种方式

通过小程序官方文档可知&#xff1a; 赋值一定需要注意。需要setData的使用&#xff0c;这样页面才刷新&#xff0c;数据才会改变&#xff0c;并且分清that和this的使用 Page() 函数用来注册一个页面。接受一个 object 参数&#xff0c;其指定页面的初始数据、生命周期函数、事…...

条码通讯配置

由Leuze&#xff08;劳易测&#xff09; LSIS 222 M5M-R1/MA208i系统组成 连接说明及器件明细&#xff1a; 打开条码调试软件BPS Configuration tool对M208i进行ip 和端口号进行配置&#xff0c;条码选择作为客户端&#xff0c;输入ip和端口号&#xff0c;选择串口通讯波特…...

知网G4期刊《高考》简介及投稿要求

知网G4期刊《高考》简介及投稿要求 一、《高考》期刊简介&#xff1a; 主管单位&#xff1a;长春市委宣传部 主办单位&#xff1a;长春出版社 国内刊号22-1372/G4 国际刊号1673-6265 代号12-240 编辑单位&#xff1a;《高考》杂志社 出版周期&#xff1a;旬刊 类 …...

第7章 CPU前端优化

接下来讨论如何使用CPU监控特性寻找CPU上运行的代码中可被调优的位置。 标准的算法和数据结构在性能敏感型工作负载并不总能表现的很好。例如&#xff0c;在“扁平化”数据结构的冲击下&#xff0c;链表基本上快被放弃了。传统链表中的每个节点都是动态分配的&#xff0c;除了…...

idea新建Java-maven项目时,出现Dependency‘xxx(jar包名)‘ not found的解决方案

项目场景&#xff1a; 项目场景&#xff1a;使用idea创建maven项目时&#xff0c;导入简单依赖时&#xff08;本文以mysql-connector-java为例&#xff09;。 问题描述 问题&#xff1a; 首先&#xff0c;在创建新的maven项目中&#xff0c;出现下列两种情况&#xff1a; &am…...

5分钟搞懂3GPP NTN标准:从Release16到19的关键技术演进与实战应用

5分钟搞懂3GPP NTN标准&#xff1a;从Release16到19的关键技术演进与实战应用 当全球通信行业将目光投向低轨卫星星座与高空平台时&#xff0c;3GPP的NTN&#xff08;非地面网络&#xff09;标准正在重塑连接边界。本文将以工程师视角&#xff0c;带您穿透技术文档迷雾&#xf…...

PMOD接口概述

简介 PMOD接口外设模块特点:低频,少量IO引脚。 两种物理规格:6针接口(4IO, 1VCC, 1GND)、12针接口(8IO, 2VCC, 2GND)。 支持的接口协议:SPI、I2C、UART、I2C、H桥、GPIO。 外设模块与主机连接方式:模块直连主机、通过6Pin或12Pin线缆或者12Pin转双6Pin分叉线缆。 外设…...

时空预测入门:从ConvLSTM的局限到PredRNN的突破,一篇讲清记忆单元演化史

时空预测技术演进&#xff1a;从ConvLSTM到PredRNN的记忆单元革命 时空序列预测一直是计算机视觉和机器学习领域最具挑战性的任务之一。想象一下&#xff0c;当你观看一段足球比赛视频时&#xff0c;大脑不仅能记住球员的位置变化&#xff08;时间维度&#xff09;&#xff0c…...

【AI微实验】这就deepseek对音频处理的理解╮(╯▽╰)╭

【手把手】零基础用PythonLibrosa搞定古琴音高识别&#xff0c;附完整代码1. 为什么要用代码“听”古琴&#xff1f;——传统音乐数字化的第一关1.1 从“泠泠七弦上”到“0和1”&#xff1a;音乐信息检索的价值1.2 核心任务拆解&#xff1a;基频&#xff08;F0&#xff09;是什…...

高性能指纹特征提取开源方案:FingerJetFX OSE架构解析与实现指南

高性能指纹特征提取开源方案&#xff1a;FingerJetFX OSE架构解析与实现指南 【免费下载链接】FingerJetFXOSE Fingerprint Feature Extractor; the initial contribution by DigitalPersona is MINEX Compliant (SDK 3F). 项目地址: https://gitcode.com/gh_mirrors/fi/Fing…...

2026必看:八款热门AI编程工具横评

一、AI编程工具榜单综述当下AI技术全面渗透软件开发领域&#xff0c;各类AI编程工具大幅降低了开发门槛、提升了编码效率&#xff0c;成为开发者必备的效率神器。本次横评精选海内外8款主流产品&#xff0c;覆盖AI原生IDE、插件式编程助手等不同形态&#xff0c;全方位盘点各工…...

7大应用场景:如何用计算机视觉技术彻底改变足球比赛分析?

7大应用场景&#xff1a;如何用计算机视觉技术彻底改变足球比赛分析&#xff1f; 【免费下载链接】sports computer vision and sports 项目地址: https://gitcode.com/gh_mirrors/sp/sports 在当今数字化体育时代&#xff0c;足球场精准定位技术正以前所未有的方式改变…...

AI驱动关键词优化的SEO未来趋势与实际应用解析

本文旨在探讨AI在搜索引擎优化&#xff08;SEO&#xff09;&#xff0c;特别是关键词优化领域的重要角色。文章分析了AI技术如何通过数据分析和用户行为洞察&#xff0c;帮助企业制定更加有效的关键词策略。AI能够实时监测市场趋势&#xff0c;识别用户意图&#xff0c;并根据这…...

如何突破Windows权限壁垒?系统管理专家的秘密武器

如何突破Windows权限壁垒&#xff1f;系统管理专家的秘密武器 【免费下载链接】NSudo [Deprecated, work in progress alternative: https://github.com/M2Team/NanaRun] Series of System Administration Tools 项目地址: https://gitcode.com/gh_mirrors/ns/NSudo 在W…...

OpenClaw技能扩展:安装百川2-13B-4bits专用插件提升自动化能力

OpenClaw技能扩展&#xff1a;安装百川2-13B-4bits专用插件提升自动化能力 1. 为什么需要为OpenClaw安装专用插件 去年冬天&#xff0c;我在处理一批技术文档归档任务时&#xff0c;发现OpenClaw的基础能力虽然强大&#xff0c;但在处理特定领域内容时总有些力不从心。比如让…...