C语言的分支

目录

分支

if语句

写法1

写法2

写法3

写法4

switch语句

这里提一句,在C语言里,0代表假,非0代表真,这和其他语言不大一样,比如java,有boolean类型,true为真,false为假

 


分支

分支,其实也就是选择,多种情况,多个分支

if语句

写法1

    if (1==1) {
        
    } else {
        
    }

写法2


    if (1==1) {

    }
    if (1==1) {

    }

写法3

    if (1==1) {
        
    } else if (1>2) {
        
    } else {
        
    }

无论是哪种写法,格式其实都是一样的 if (表达式),如果表达式的结果是true,就执行代码块的代码,不然就不执行

写法4

#include <stdio.h>

int main() {


   int price = 66;
   if (price > 50) {
       if (price > 60) {
           if (price > 70) {
               printf("讲真的,比70都多,太贵了!!!");
           } else {
               printf("还行,没超过70,70是我的底线");
           }
       }
   }

    return 0;
}

来个示例,为了演示各种情况

#include <stdio.h>

int main() {

   int price = 99;
   if (price > 100) {
       printf("价格是 %d,贵了\n", price);
   } else if (price > 30 && price <= 99) {
       printf("价格是 %d,还能接受\n",price);
   } else {
       printf("价格是 %d,适合我,便宜~!\n", price);
   }


    return 0;
}

switch语句

switch也是一个分支语句,一般用于情况比较多,比较明确的情况,为什么有了if还要有switch呢?  你想想,如果你的条件很多,你去写很多if是不是很麻烦,而且也不好看

写一个简单的switch语句

#include <stdio.h>

int main() {


   int today = 0;
   scanf("%d", &today);

    switch (today) {
        case 1:
            printf("周一");
            break;
        case 2:
            printf("周二");
            break;
        case 3:
            printf("周三");
            break;
        case 4:
            printf("周四");
            break;
        case 5:
            printf("周五");
            break;
        case 6:
            printf("周六");
            break;
        case 7:
            printf("周日");
            break;
    }

    return 0;
}

 

注意!!!!!  case之后必须有break,break代表着终止,意味着终止当前的switch,如果没有break,就会出现所谓的case穿透,case会一直执行,直到遇见break或者整个switch结束

我们来试一下不写case

#include <stdio.h>

int main() {


   int today = 0;
   scanf("%d", &today);

    switch (today) {
        case 1:
            printf("周一");
//            break;
        case 2:
            printf("周二");
//            break;
        case 3:
            printf("周三");
//            break;
        case 4:
            printf("周四");
//            break;
        case 5:
            printf("周五");
//            break;
        case 6:
            printf("周六");
//            break;
        case 7:
            printf("周日");
//            break;
    }

    return 0;
}

这就是case穿透,除了自己的case,它还走了别的可能性,穿透了case

当然,这个也看需求,比如你要求输入1-3,输出周一到周三,那我们就没必要在这几个case写break,直接让它穿透就OK,还是很灵活的

case决定了入口,而break决定了出口

switch必须是一个整形表达式,相应的,case必须是一个整形常量表达式,无论是表达式还是整形, 只要最后的结果是整形常量表达式就行

还有一种情况,是超出了case的处理范围,比如上面1-7,我不,我就输入100,那程序不就没法处理了?

试一下,看会发生什么现象

哎?什么都没发生,那这个怎么办呢?

其实switch也考虑到了这个情况, 所以有一个default,如果不满足别的case,就会走这个default

#include <stdio.h>

int main() {


   int today = 0;
   scanf("%d", &today);

    switch (today) {
        case 1:
            printf("周一");
            break;
        case 2:
            printf("周二");
            break;
        case 3:
            printf("周三");
            break;
        case 4:
            printf("周四");
            break;
        case 5:
            printf("周五");
            break;
        case 6:
            printf("周六");
            break;
        case 7:
            printf("周日");
            break;
        default:
            printf("你输错了铁子.... 来,重新来");
            break;
    }

    return 0;
}

这里提一句,在C语言里,0代表假,非0代表真,这和其他语言不大一样,比如java,有boolean类型,true为真,false为假

#include <stdio.h>

int main() {


   if (1) {
       printf("这个是真");
   }

    return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值