当前位置:网站首页>【C语言初阶】详解分支语句
【C语言初阶】详解分支语句
2022-08-09 14:53:00 【小周在忙_】
文章目录
前言
提问:c语言有哪些语句?
C语句可分为以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
本章讲解的分支语句是控制语句的一种,C语言有九种控制语句,可以分为以下三类:
(1)分支语句(也叫条件判断语句):if语句、switch语句
(2)循环语句:for语句、while语句、do-while语句
(3)转向语句:break语句、continue语句、goto语句、return语句
一、什么是分支语句?
如果条件满足才能做某件事情,如果条件不满足就做另外一件事情,或者什么也不做。分支语句又被称为“判断语句”,正因为有了判断,才让程序有了很多的分支。
二、分支语句的两种形式
1. if 语句
1.1 语法结构
单分支语句
if(表达式){
语句;
}
双分支语句
if(表达式){
语句1;
}
else{
语句2;
}
多分支语句
if(表达式1){
语句1;
}
else if(表达式2){
//此处else if语句可以有多个
语句2;
}
else{
语句3;
}
注:当只有一条执行语句时可以省略语句体的大括号,但一般建议写上,使代码可读性更高。
1.2 语句解释
当表达式为真时则执行其语句体,为假则跳过其语句体,继续执行下一条语句。
0表示假,非0表示真
1.3 else的匹配
举例:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("你好\n");
else
printf("hello\n");
return 0;
}
提问:这个代码输出结果是什么?
正确答案是:什么也不输出。是不是有的同学会认为是输出hello,那么这里就要探讨一下else究竟和哪个if匹配?
当我们在编译器中输入这段代码时:
从图片中可以看出编译器自动让else和离它近的if对齐了,确实如此,else是和它离的最近的if匹配的。这种问题在我们自己写代码的时候出现的少,但在做题时一定要多注意,谨防掉入else悬空的陷阱中。提问:如果这个代码我就想输出hello呢?
这里我们只需要加上大括号即可:
2. switch 语句
提问:当我们有很多分支时,还用if...else if ...else if 的形式写么?
switch语句也是一种分支语句。常常用于多分支的情况。
2.1 语法结构
switch(整型表达式)
{
case 整形常量表达式:
语句;
case 整形常量表达式:
语句;
case 整形常量表达式:
语句;
......
}
2.2 语句解释
当整形表达式值为整型常量表达式值时,则执行其语句。执行完该语句后,接着执行下面的语句。
举例:
提问:我只想输出星期三,不想输出后面的语句该怎么做?
这时就要学习一下转向语句中的break语句
2.3 switch语句中的 break
在switch语句中,我们没办法直接实现分支,
搭配break使用才能实现真正的分支。
break的作用:直接跳出当前的代码块
举例:
提问:如果day=8或者其它任何值时,输出什么?会报错么?
如果表达的值与所有的case标签的值都不匹配,什么都不会输出。结构就是所有的语句都被跳过而已,
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
为了完善该分支语句,还需要引入default子句。
2.4 default子句
- 语法结构
default:
语句;
举例:
- 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
- 每个switch语句中
只能出现一条default子句。 - 可以出现在
语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
注:在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。
总结
以上就是本篇文章所有内容,重点讲解了if语句和switch语句的语法结构及常见错误。希望各位大佬们也能给出一定建议,互相学习。
边栏推荐
猜你喜欢

复数与复数域

ImageWatch无法显示图像

相干光(光学)

DMPE-PEG-Mal Maleimide-PEG-DMPE 二肉豆蔻酰磷脂酰乙醇胺-聚乙二醇-马来酰亚胺

光线的数值追踪

navicat for Oraclel链接oracle 报错oracle library is not loaded的解决办法

EasyExcel的应用

DMPE-PEG-Mal Maleimide-PEG-DMPE dimyristoylphosphatidylethanolamine-polyethylene glycol-maleimide

shell------常用小工具,sort,uniq,tr,cut

6大论坛,30+技术干货议题,2022首届阿里巴巴开源开放周来了!
随机推荐
Startup error: Caused by: org.apache.ibatis.binding.BindingException summary solution
Shell编程之循环语句
Redis6.2.1配置文件详解
Grad CAM 模型可视化
Technology Sharing | How to Handle Header Cookies in Interface Automation Testing
Similar image detection method
DSPE-PEG-Hydrazide,DSPE-PEG-HZ,磷脂-聚乙二醇-酰肼MW:1000
What do professional quantitative traders think about quantitative trading?
浅析Servlet三大容器的常用方法及其作用域
光线的数值追踪
Mysql two engines comparison
一种基于视频帧差异视频卡顿检测方案
Mind map FreeMind installation problems and simple use
突然想分析下房贷利率及利息计算
对于程序化交易,重在预测还是重在对策呢?
相干光(光学)
How to flexibly use the advantages of the quantitative trading interface to complement each other?
Seize the opportunity of quantitative trading fund products, and quantitative investment has room for development?
相似图像的检测方法
What is a template engine?What are the common template engines?Introduction to common commands of thymeleaf.