一.什么是语句

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语句_c语言

在这里再说明一种情况:

C语言中的分支语句——if和switch语句_#include_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语句_c语言_04

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

C语言中的分支语句——if和switch语句_c语言_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语句_switch语句_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语句_#include_09


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

​另外需要注意

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

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

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



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