[C语言] 03--控制流

1.if

逻辑:程序中某一段代码需要满足一定的条件才会被执行
语法:
if 语句: 表达一种 , 如果条件满足 则 执行某个代码块
if-else 语句: 表达一种 ,如果 条将满足则执行某个代码块 否则执行另外一个代码块
//编程常用

#if 1
    /*代码块一*/
#else
    /*代码块二*/
#endif    

2.switch

逻辑:根据不同的条件来执行不同的代码块
语法:

int num = 0 ;

printf("请你来几拳!!!\n");

scanf("%d" , &num);

while(getchar() != '\n'); // 清空标准输入缓冲区

switch  ( num ) {     
   case 1 :
          printf("它一个左勾拳!!\n") ;
          break ;         
   case 2 :
           printf("它一个左勾拳和一个右鞭腿!!\n") ;
           break ;                                          
    case 3 :                                                                
           printf("一个不小心打我脸上了!!!!!\n") ;         
           break ;
    default :
           printf("它怂了!! !!!\n") ; 

}

注意:
①switch(num )语句中的num , 它必须是一个整型的表达式,也就是所switch只能判断整型的数据
②case 语句中的 必须是整型常量,包括普通的字符。不包括被const修改的整型数据
③break 用来中断/跳出当前的循环。如果没有则会从条件满足的语句开始一条一条的往下执行,直到整个switch - case 结束或者遇到其它代码块中的break
④default 并不是必须存在,它一般放在最后面,用来提示用户表示都不满足以上条件。由于在最后面可以不添加break

3.while和do…while

逻辑:使得程序中某一端代码块重复循环执行。

while(num)  // 非零则真 (布尔值)
{
    printf("num:%d\n" , num-- );
}
do
{
   printf("num:%d\n" , num-- );
} while (num);

注意:
①while 循环先进行判断而且条件为真,然后再执行代码块(有可能一次都不执行)
②do … while 则是先执行一次代码块 ,然后再判断条件是否成立(最少会执行一次代码块)
③while(num); --> 空循环 这个分号要慎重
④do… while(num) ; 这个分号不能丢

4.for循环

逻辑: 与while 类似, 都是让程序中某一段代码块重复运行,但是for相对与while来说更加紧凑。把所有的循环控制都集中到一行代码中

for (size_t i = 0; i < num ; ++i)
{
    printf("i:%ld\n" , i );
}

for (;;)   // 相当与 while(1)死循环
{
    printf("i:%d\n" , i );
}

注意:
① 初始化语句只会被执行一次
②第三个表达式 ++i 再第一次循环的时候并没有被执行
③第三个表达式中 前缀/后缀 并不影响 i 再循环中取值的先后
④for 循环语句中 ,三个表达式都可以省略,但是分号必须留下
⑤for 循环语句中 , 三个表达式中间用分号来隔开 ;
⑥在for循环中直接定义并初始化只在C99的编译规则下可以这么干, 所以可以添加

5.break与continue

break: 跳出循环结构 / 跳出当前层的循环
continue : 结束当前这一次循环,重新进入下一次的循环

for (int i = 0 ; i < num  ; ++i )
{
    while(1)  // 在 循环体内部可以嵌套其它的循环
    {
        printf("你打我呀!!\n");
        break; // 跳出while这一层循环, 并不影响外面的for 
    }
    if (i == 5)
    {
        continue ; // 跳过当前这一次循环, 导致后面的代码在当次循环中不执行
    }
    printf("i:%d\n" , i );
}

6.goto语句

逻辑: 无条件跳转

int main(int argc, char const *argv[])
{
    int num = 0 ;
    
    printf("请你来几拳!!!\n");
    scanf("%d" , &num);
    while(getchar() != '\n'); // 清空标准输入缓冲区
    
    for (int i = 0 ; i < num  ; ++i )
    {                                       
        goto A; // 无条件跳转到标签为 Even 的位置
    }                                                               
                                                                      
    A: 
    printf("这里是标签的位置!!!\n");
  
    return 0;

}

注意:
① 标签后面有个冒号:
② goto 语句是一个无条件跳转的语句, 不利于程序的可读性,一般不建议使用
③ goto 语句一般出现在驱动比较多, 用来处理严重的错误,并退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值