关于C语言初期 -分支 循环 以及二次学习补漏的点

前言

        通过一些免费的课程或者是学校的教学,C语言当中较为重要的章节 -分支循环,大部分人应该都有了初步的认识并且写了一些代码,本文将简单提及一些容易遗漏的点。

正文

1. if-else语句

        1.1 语句匹配问题       

关于if-else语句,比较容易出错的地方是if与else语句的匹配问题,我们可以记住这一句话else 总是跟最接近 的 if 匹配

        列如示例的代码

初看代码不熟悉很容易上来就判断 a 是 0,不等于 1 ,那就执⾏ else ⼦句,打印 haha
但是当运⾏代码,输出的结果是:啥都不输出。
若我们想要else与第一个if匹配,我们可以这样写
这就是匹配问题。

1.2. 条件判断中,语句编写问题

        我们要记住"多个关系运算符不宜连⽤",因为实际上关系操作符参与的关系表达式,通常返回0或1,表示真假,假如连用多个关系运算符,容易变成返回的真假值来跟后面的语句运算,列如

i < j < k  实际上执行的是 (i < j) < k,也就是拿i与j比较的真假值与k比较
正确书写可以这样写  i < j && j < k

2.switch语句

2.1. default的执行

在考虑switch 后的表达式中的值⽆法匹配代码中的 case 语句时,这时候要不就不做处理,要不就得在 switch 语句中加⼊default ⼦句,因为default语句没有顺序要求,这时候常有人会理所当然的把default语句放在任意位置,这时候若是遗忘了break语句常常会发生
假如我们调用函数使用func(1),实际上会出来b=0而不是16,也就是default会被当成一个普通的语句执行,直接给b赋值,而不是在case都不符合时再去执行default语句。

3. while与do-while

        3.1. while

        while语句中需要注意的在其它中也同样需要注意,列如条件判断语句中的代码会被实际运行,列如 while(scanf("%d", &n) != EOF) ,该语句可以直接让我们输入n的值并且判断有输入就执yu行while循环。

        但是切记不要写单写一个赋值语句在条件判断当中,因为赋值语句是永真,会不断循环

        以及条件判断语句会比循环多执行一次以便判断是否需要进行下一次循环

        3.2. do-while

        该语句使用较少,与其它语句的区别为while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。

        在"输⼊⼀个正整数,计算这个整数是⼏位数?"这样的问题中,我们就可以用do-while语句,因为在初始化n=0后,也可以直接进行循环,因为n即使是 0,也是1位数,可以统计位数的。

        ​​​​​​​

4. for语句

        我们通常这样书写for语句:for(表达式1; 表达式2; 表达式3),我们需要注意他的语句执行是按照1->2->循环语句->3来执行,也就是最后再执行表达式3

5.continue与goto语句

        5.1. continue

        continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进⾏下⼀次循环的判断,在循环内直接使用即可,唯一需要注意的就是跳过的代码可能影响到条件的判断导致跳不出循环

        5.2. goto语句

        使用 goto 语句通常是不推荐的,因为它会导致程序逻辑变得混乱,难以维护和理解,并且它的使用还十分受限,如C和C++,goto 语句通常被限制在函数内部,而不能跳转到另一个函数的内部。这是因为函数之间的控制流跳转应该由函数调用和返回来管理,而不是通过直接的无条件跳转来实现。

        笔者初期使用较多的goto end; 现在也用exit(0)来代替了。

尾声

        循环与分支实际上是编程语言中较为重要的部分,它会初步构建我们的结构化意识,为日后编写清晰、易读、易维护的代码做铺垫,所以对这部分知识的查漏补缺是十分重要的。

        

        
 


 

         

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值