C语言中关于if else的理解

if else我们可以理解为

if(条件1)                                //如果条件1成立

        语句1;                        //执行语句1

else                                      //如果条件1不成立

        语句2;                          //执行语句2

这是一个经典的if else双分支语句,那么除了双分支外,if else还有多分支语句,本文重点讲解双分支和多分支的概念 

双分支

#include <stdio.h>
int main() {
    int age=10;
    if(age>=18)
        printf("成年\n");
    else 
        printf("未成年\n");
    return 0;
}

先看代码,由于age<18,所以if里面的条件不成立,就执行语句2。

那么如果我们要给这个程序加上一个未成年不能喝酒的条件呢?

#include <stdio.h>
int main() {
    int age=20;
    if(age>=18)
        printf("成年\n");
    else
        printf("未成年\n");
        printf("不能喝酒");
    return 0;
}

这样写是错误的,当我们没有分组else下面的语句时,else默认只包含下面的第一条语句,所以现在虽然age=20,但打印的结果是这样的

0648c88ec02b430d9c2145cf981bcf93.png

那么我们的解决方法是:

1、在else下面的语句加上大括号

#include <stdio.h>
int main() {
    int age=20;
    if(age>=18)
        printf("成年\n");
    else {
        printf("未成年\n");
        printf("不能喝酒");
    }
    return 0;
}

2、else下面的语句结束时用逗号而非分号

#include <stdio.h>
int main() {
    int age=20;
    if(age>=18)
        printf("成年\n");
    else
        printf("未成年\n"),    //注意这一行最后的分号被改为逗号了
        printf("不能喝酒");
    return 0;
}

这样就能有效的解决我们在if else当中遇到多条要执行的语句并可以让它们在else当中一一对应的情况了。

多分支

if(条件1)                                 //如果条件1成立

        语句1;                         //执行语句1

else  if(条件2)                        //如果条件1不成立,执行条件2

        语句2;                           //执行语句2

else                                      //如果条件1和条件2都不成立

        语句3;                          //执行语句3

#include <stdio.h>
int main() {
    int age=20;
    if(age<18)
        printf("少年\n");
    else if(age>=18 && age<=30)
        printf("青年\n");
    else if(age>30 &&  age<=50)
        printf("中年\n");
    else
        printf("老年\n");
    return 0;
}

需要注意的时,当我们在写" if(age>=18 && age<=30) "的时候不能写成" 18<=age<=30 ",在c语言中如果写成这样,那么程序运行的时候就会误判

                                                        age=60
18<=age(60)为真,输出1
age(1)<=30为真,输出1

所以虽然age=60,但程序依然认为我们是" 青年 "

 

 

 

 

如果觉得这篇文章对你有用的话,可以支持一下博主,b站搜索:夜临ね   即可搜索到我,本人现在制作火影视频,如果要打段位也可以私聊我

488bd10923c24a18aed9d8609ef8703c.jpg

 

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值