初识C语言:扩展世界观,选择语句之行

简介: 初识C语言:扩展世界观,选择语句之行

一、什么是分支语句

如果条件满足才能做某件事情,如果条件不满足就做另外一件事情,或者什么也不做。分支语句又被称为“判断语句”,正因为有了判断,才让程序有了很多的分支选择。


二、分支语句的分类

2.1 if 语句

2.1.1 if语句的语法结构

单分支:

if(表达式)

{

       语句;

}


双分支:

if(表达式)

{

       语句1;

}

else

{

       语句2;

}


多分支:

if(表达式1)

{

       语句1;

}

else if(表达式2)//此处else if语句可以有多个

{

       语句2;

}

else

{

       语句3;

}


注 :当只有一条执行语句时可以省略语句体的大括号,但一般建议写上,使代码可读性更高。

2.1.2 执行方式

当表达式为真时则执行其语句体,为假则跳过其语句体,继续执行下一条语句。

0表示假,非0表示真


2.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.2 switch语句

2.2.1 switch语句的语法结构

switch(整型表达式)

{

  case 整形常量表达式:

   语句;

  case 整形常量表达式:

   语句;

  case 整形常量表达式:

   语句;

  ......

}


2.2.2 执行方式

当整形表达式值为整型常量表达式值时,则执行其语句。执行完该语句后,接着执行下面的语句。

示例:

#include<stdio.h>
int main()
{
  int day = 2;
  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;
}


它的编译结果为

如果我只想输出星期二怎么办?

这就要用到break语句了。


2.2.3 switch语句中的 break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

break的作用是跳出当前循环或者代码块

示例:

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


那当day=8或者其他值的时候该怎么办呢?

2.2.4 default子句

default:

   语句;


示例:

#include<stdio.h>
int main()
{
  int day = 9;
  switch (day)
  {
  case 1:printf("星期一\n");
    break;
  case 2:printf("星期二\n");
    break;
  case 3:printf("星期三\n");
    break;
  case 4:printf("星期四\n");
    break;
  case 5:printf("星期五\n");
    break;
  case 6:printf("星期六\n");
    break;
  case 7:printf("星期天\n");
    break;
  default:
    printf("输入错误\n");
  }
  return 0;
}


当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

每个switch语句中只能出现一条default子句。

可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子。


 :在每个 switch 语句中都放一条default子句是个好习惯 。

相关文章
|
5月前
|
编译器 Linux C语言
python C语言扩展之简单扩展-使用ctypes访问C代码
python C语言扩展之简单扩展-使用ctypes访问C代码
46 0
|
1月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
3月前
|
移动开发 C语言
C语言13-----输出常量的两个小扩展
C语言13-----输出常量的两个小扩展
|
3月前
|
前端开发 C语言
C语言08----注释扩展知识点,注释快捷键:ctrl+k,ctrl + C,取消快捷键 ctrl + K,ctrl + U
C语言08----注释扩展知识点,注释快捷键:ctrl+k,ctrl + C,取消快捷键 ctrl + K,ctrl + U
|
5月前
|
C语言 iOS开发 MacOS
Objective-C是一种面向对象的编程语言,它扩展了C语言,添加了面向对象编程的特性
【5月更文挑战第9天】Objective-C是苹果公司的面向对象编程语言,用于iOS和macOS应用开发。它扩展了C语言,包含类定义(接口和实现)、对象创建、消息传递、属性、协议、块和类别等语法特性。例如,类通过`@interface`和`@implementation`定义,对象用`alloc`和`init`创建,方法通过消息传递调用。属性简化变量声明,协议定义可选方法集合,块支持代码块作为参数,类别用于扩展已有类。错误处理常使用NSError对象。要深入了解,建议查阅相关教程和文档。
52 0
|
5月前
|
算法 搜索推荐 程序员
C语言第三十三练—— KMP算法和扩展 KMP算法
C语言第三十三练—— KMP算法和扩展 KMP算法
61 0
|
5月前
|
算法 搜索推荐 程序员
C语言第二十二练——扩展欧几里得算法
C语言第二十二练——扩展欧几里得算法
53 0
|
5月前
|
SQL 关系型数据库 C语言
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
85 0
|
5月前
|
SQL 关系型数据库 数据库
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
170 0
|
5月前
|
SQL 关系型数据库 编译器
PostgreSQL SQL扩展 ---- C语言函数(二)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)