首页 > 其他分享 >C语言中的分支语句——if和switch语句

C语言中的分支语句——if和switch语句

时间:2022-10-20 23:01:40浏览次数:53  
标签:语句 case else switch printf C语言 表达式

一.什么是语句

C语言中由一个分号‘;’隔开的就是一条语句。比如:

       printf("haha\n");

       1+2;

再比如:

       int main()

       {

               ;        

               return  0;

       }

单独的一个分号,也是语句,称为空语句。


二.if语句

1.语法结构:

1.if(表达式)

       语句;

2.if(表达式)

       语句1

 else

       语句2

3.if(表达式1)

       语句1

  else if(表达式2)

       语句2

   ·······

   ·······

   ·······

  else

       语句3


比如

#include<stdio.h>
int main()
{
int age=18;
if(age<18)
printf("未成年\n");
else if(age>=18 && age<28)
printf("青年\n");
else if(age>=28 && age<50)
printf("壮年\n");
else if(age>=50 && age<90)
printf("老年\n");
else
printf("高寿\n");
}
结果是:

C语言中的分支语句——if和switch语句_switch语句

在这里再说明一种情况:

C语言中的分支语句——if和switch语句_switch语句_02

输出青年

 如果运行上图的代码会输出“青年”,这是因为C语言不允许这样写判断表达式,表示and用‘&&’;表示or用‘||’。一旦用18<=age<28,电脑会先判断前面那个操作符,再判断后面那个操作符,即18<=age错误则为0,再0<28正确,那么就会输出“青年”,(0为假,非0为真)


当条件成立,要执行多条语句时要用“{}”将所写的语句包括。如:

C语言中的分支语句——if和switch语句_switch语句_03


 2.悬空else

#include<stdio.h>
int main()
{
int a=0;
int b=2;
if(a==1)
if(b==2)
printf("hh\n");
else
printf("aa\n");
return 0;
}

当我们写下这样的一段代码,发现else的缩进很奇怪,不知道它是跟哪个if相匹配,我们再来看看输出结果:

C语言中的分支语句——if和switch语句_#include_04

结果是没有输出,这是因为else是跟最近的未匹配的if配对,也就是说其实正确缩进是这样的:

C语言中的分支语句——if和switch语句_#include_05

a==0,不符合条件表达式,所以后面的就不会执行,输出的也就是空。

三.switch语句

switch语句也是一种分支语句。常用于多分支的情况。
switch(整型表达式)
{
        语句项;
}

语句项就是一些case语句,比如:
case  整形常量表达式
        语句;

比如:

#include<stdio.h>
int main()
{
int day=0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期天\n");

}
return 0;
}

运行后发现,后面的都会输出:

C语言中的分支语句——if和switch语句_c语言_06

 这是因为break没有用到,在switch语句中,无法直接实现分支,搭配break才能实现分支

C语言中的分支语句——if和switch语句_#include_07

每个case后面都最好加上break,这样更能避免出错。


case还有一种用法:

C语言中的分支语句——if和switch语句_switch语句_08

像这样当我们输入1~5就会输出“工作日”;输入6~7就会输出“休息日”。

switch语句还需要考虑一点,就比如,如果表达的值与所有的case标签的值都不匹配怎么办?其实也没什么,结构就是所有的语句都被跳过而已。程序并不会终止,也不会报错,因为这种情况在C中并不认为适合错误。但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?你可以在语句列表中增加一条default子句。比如:

C语言中的分支语句——if和switch语句_switch语句_09


像这样,当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。

​另外需要注意

C语言中的分支语句——if和switch语句_switch语句_10

1.switch后面必须是整型变量
2.case后面整型常量表达式(整数)
下面举些例子来证明:

C语言中的分支语句——if和switch语句_#include_11



C语言中的分支语句——if和switch语句_c语言_12

标签:语句,case,else,switch,printf,C语言,表达式
From: https://blog.51cto.com/u_15832450/5780735

相关文章

  • C语言循环语句——while、for、do while
    一.while循环    我们已经学会了if语句,当条件满足的情况下,if语句后的语句执行,否则不执行。但是这个语句只会执行一次。但是我们发现生活中很多的实际的例子是∶同......
  • 嵌入式-C语言基础:理解形参和实参的区别
    #include<stdio.h>//实参:函数原型中声明函数后面带的参数inttest(intx)//函数原型{//函数体printf("test里面的x地址=%p",&x);returnx;}//变量......
  • 嵌入式-C语言基础:二维数组
    #include<stdio.h>intmain(){intarray[2][3]={{1,2,3},{4,5,6}};for(inti=0;i<2;i++){for(intj=0;j<3;j++){prin......
  • 【C语言】结构体基础应用
    ......
  • sql语句排序无效的问题
    数据可视化时因为数据类型排序无效的问题:这是由于你要排序的类型是String类型的而ORDERBY方法排序要求整数型。这就需要在ORDERBY后加CAST(需要排序的字段A......
  • 【C语言】第一个C语言程序代码分析
    在上一篇中我们已经创建了第一个C语言程序,接下来我们来分析一些此代码。1. #include<stdio.h>#include是C语言的预处理指令之一。在代码区域单独写出printf("hell......
  • 【数据结构/C语言】用链栈对整数进行升序排序
    #pragmawarning(disable:4996)#include<stdio.h>#include<stdlib.h>typedefintElemtype; typedefintStatus;typedefstructStack*SqList;typedefstructSt......
  • c语言—操作符篇—笔记
    这章有很多要记得东西,比如操作符属性表(未附),真的需要记忆。操作符1.分类算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达......
  • shell条件语句
    一,条件测试1.test命令测试表达式是否成立,若成立返回0,否则返回其他数值格式1:test条件表达式格式2:[条件表达式][root@localhost~]#test-e1.txt|echo$......
  • 【C语言】野指针
    ......