C语言基础之分支语句

本文详细介绍了C语言中的分支语句,包括if语句的三种结构(单if、if-else、多分支)及其注意事项,以及switch语句的基本语法和使用场景。强调了if语句中条件表达式的真假判断标准和else的匹配规则,并通过实例展示了switch语句的执行流程,特别是break语句的作用。内容适用于初学者掌握C语言的控制流程。
摘要由CSDN通过智能技术生成

分支语句概述

C语言中,代码分为顺序结构,选择结构和循环结构,选择结构对应的即为分支语句。
分支语句中最主要的语句如下:

  1. if语句
  2. switch语句

if语句

if语句是C语言中编写代码最常用的语句之一,常用来判断是否满足条件,进而执行后续的代码。
首先,在介绍if语句前先要了解一个知识点——C语言中,0表示为假,非0表示为真(而不只是1代表真)。

if语句的语法结构

  1.if结构:
        if (表达式)
            语句;
  2.	if - else结构(单分支)if (表达式)
            语句;
        else
            语句;
  3.	多分支结构:
        if (表达式)
            语句;
        else if (表达式)
            语句;
    ……
        else
            语句;

当表达式判断为真则执行后续的代码,为假则跳过该表达式所控制下的代码执行后面的代码。
重点说明:

  1. if语句中,如果没有用到代码块符号({})时,if语句后只能控制一条语句,如果有多条语句,则必须使用代码块符号({})。
int main()
{
    if(表达式)
   {
        语句列表1}
    else
   {
        语句列表2}
    return 0;
}
  1. 当代码较复杂时,一段代码中出现多次if-else语句时,else语句与最近的if语句相匹配,而不是看缩进。以下为一个错误示例:
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");

由于else与离它本身最近的if相匹配,顾此处的else的条件为b不等于2时,输出“haha”,而第一个if的条件不成立,所以不能进入到后续的代码,故此处无任何输出。

附上一个简单的if-else语句的代码

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("少年\n");
	else if (age >= 18 && age < 40)
		printf("青年\n");
	else if (age >= 40 && age < 60)
		printf("壮年\n");
	else if (age >= 60 && age < 90)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}

switch语句

switch语句相较于if语句来说在特殊情况下可以简化代码,使代码更加简单,可读性更强,常常用在分支多的情况。

switch语句的语法结构

switch(整型表达式)
{
    case 整形常量表达式:
         语句;
    case 整形常量表达式:
         语句;
    ......
    default:
         语句;
}
  1. switch后跟的表达式必须是整型、
  2. case后面必须跟整形常量。
  3. default:当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。
  4. switch-case语句常和break语句搭配使用。如果不使用break语句,当表达式满足一个条件时,编译器会先执行此条件下的代码,接着执行后续所有条件下的代码,也就是说会把满足某个条件后的所有代码都执行完。举例:
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
   {
        case 1printf("星期一\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;
}

首先假设此处的代码中都删掉break语句:
当day输入为5时,将会在执行完printf(“星期五\n”)后不会跳出switch语句,而是继续执行后续所有的代码,打印出“星期五、星期六、星期天”。

再看此代码:break语句本身的意思为在此处后跳出循环,不再执行循环中后续的代码,因此在switch语句中,当执行完break语句时,直接跳出switch语句,不再执行switch中的代码,故此处day输入为5时,执行完printf(“星期五\n”)后跳出switch语句。

  • 45
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值