【C语言】分支语句

C语言初阶

C语言入门-第0节
C语言中的常量和变量
C语言的操作符上
C语言的操作符下
C语言staic的详细介绍和其他关键字的简单介绍



语句的类型

C语言中的语句分为下面五类:

  1. 空语句
    就是一个分号(;),用法它一般应用于语法要求出现一条完整的语句,但又不需要它执行任何任务
  2. 表达式语句
    在一个表达式后面加上一个分号(;),例如3+2是一个表达式,那么3+2;就是一个表达式语句
  3. 函数调用语句
    字面意思,就是调用函数的语句
int main()
{
  int x = 1;
  int y = 2;
  Add(x,y);//这就是一条函数的调用语句
  return 0;
}
  1. 复合语句
    用一个大括号括起来的多条语句就是复合语句
//这是一个函数
if(a>b)
{                   //这个大括号的内的就是复合语句
 temp = a;
 a = b;
 b = temp;
}
  1. 控制语句
    控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
    这九中语句可分为以下三类:
  • 条件判断语句也叫分支语句:if语句、switch语句
  • 循环执行语句:do while语句、while语句、for语句
  • 循环执行语句:do while语句、while语句、for语句

接下来我就重点讲下分支语句

分支语句

if语句

if(expression)
    statement1;
else
    statement2;

介绍
括号内的表达式是判断表达式,我们在前面已经了解到C语言中0表示假,非0表示真。括号内的表达式如果为真就执行statement1;如果为假,就执行else的statement2。
分类
if语句分为单支、双支和多支。以上例子为双支if语句。
举例在这里插入图片描述

先判断a与b是否相等,为假再判断a是否大于b,为假就执行else语句的内容。

常见问题

  1. if语句只能控制一条语句
    在这里插入图片描述
    编译器报错,因为else不能与if语句匹配,这时解决方法就是把这两条语句变成一条,怎么变?
    用花括号把它们两变成复合语句。在这里插入图片描述
  2. 悬空else问题
int main()
{
 int a = 0;
 int b = 2;
 if(a == 1)
   if(b == 2)
     printf("hehe\n");
 else
    printf("haha\n");
 return 0;
} 

你们觉得这串代码的输出结果是什么?是haha,那你就错了!在这里插入图片描述

else与最近的if语句匹配,只不过这串代码迷惑了你,以为else与第一个if匹配。
那该如何解决?直接上花括号!在这里插入图片描述
注意
这两个常见问题都无不在提醒你要使用花括号和形成良好的代码风格。


switch语句

switch(整形变量)
{
  case 整形常量或表达式:
  statement1;         //这两句叫做语句项
  case 整形常量或表达式:
  statement2;
  ...
  default:
  statementn;
}

什么时候使用
当你要判断的语句太多时,这时你可以使用switch。
介绍
空号内必须是整形变量,然后根据这个整形变量的值在花括号内case后面的值进行匹配,如果相等就进入case语句,执行statement;如果这个整形变量与case后面的值都不相等时,这时就执行default的内容。
介绍无力,直接看例子
例子及常见问题
在这里插入图片描述

结果似乎和我们料想的不太一样。输入1,结果应该是星期一才对,为什么会出现这种情况?
答案是case只是入口,意思就是当你输入的整形值day和case后面的值相等时,就会执行case day后面的内容,但由于没有出口,编译器会一直执行下去,直到switch语句结束。
那该如何解决?
在case和default里面加上break,给这个入口配备一个出口。在这里插入图片描述
在这里插入图片描述
常见问题2.0

  1. 那是不是每条语句项后面都要加上break?那倒不一定。
    比如:在这里插入图片描述
  2. default语句放最后面可以不加break?可以。但当你放在最前面时,就得加上break。在这里插入图片描述
    注意
    在case和default加上语句项是个好习惯。

这一节只介绍了分支语句,我会尽快地把其他语句分享出来。
如果文中有那些内容讲错了,请指出,我会积极改正。感谢!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值