嵌入式开发之C语言基础(二)

        上篇文章我们聊到了C语言的数据形式及其输入输出,这篇我们来聊一聊C语言中的流程控制。流程控制是我们今后做嵌入式开发编程中必不可少的一环,像我们平时玩的51,32等,要实现某一功能一定会涉及流程,所以我们就来简单聊一聊。 

        if和else 语句

        流程控制中最最最基础的就是if...else语句,单用一个if语句称其为单分支控制的条件语句,其实现形式:if(表达式P)  语句A,例如if (a > b)  max = a;这里涉及到了关系运算符,括号里的>就是关系运算符,还包括<  <=  >=  ==  != ,分别代表啥意思我就不过多解释了,但是尤其要注意的是:==不要写成了=。我们来关注一下括号里的表达式:可想而知如果要执行if后面的语句,括号里的表达式一定要成立,也没啥好讲的,重点讲一下含有逻辑运算符的表达式,关于逻辑表达式:

逻辑运算符类型优先级
单目最高
&&双目较高
||双目较低

具体应用我们直接上代码:

这个程序大家应该都看得懂,重点关注一下if(!a)这个语句,if语句要执行要满足其括号里的表达式为真,所以!a要为真,故a要为假,初学时会感觉有点绕,理一下逻辑就好了。

        用到if当然也少不了else,简单的if...else语句不难,不满足if就else,无非就两种情况,这也称双分支控制的条件语句,这里面呢有一个叫条件表达式的东西,例如if (a>b) printf("max=%d",a); else printf("max=%d",b);可以简化为:max = a > b?a:b; printf("max = %d",max);要注意的是条件运算符是C语言中唯一的三目运算符。

        前面都不是很难,重点来看一下用于多分支控制的条件语句,就是含有else if的语句,我们回到上一个程序:

我们把原来代码中第二的第三个if换成else if,输入0和6对比一下之前的输出结果:可以发现没有了非运算,我们再稍加修改:

我们把原来第二个else if语句和第三个互换一下位置,对比一下输出结果,我们不难发现:只要有第一个条件满足了就不会继续执行下去了,这就是多个else if语句和多个if语句的差别。

        switch...case 语句

        switch...case语句其实和if...else if语句差不多,即满足了其中一个条件就会结束,一般要讨论的情况大于三种我们就会选择switch...case语句,case后面必须接一个常量,且常量与case直接要用空格隔开,常量后面再加冒号,比如case 1:、case 2:等。我们在代码上看看:

应该不是很难理解,就是要注意一个case要以break结束。 

if...else if语句和switch...case语句理解起来是一样的,但是实际使用起来还是有不一样的:

图一使用的switch...case语句,图二使用的if...elseif语句,很明显图一可以用if...else if语句来替换,但是图二可以用switch...case语句来替换吗,很明显图二用switch...case语句明显复杂了许多,所以我们平时自己做项目的时候要根据自己的情况而定。

        while和do...while语句

        while是一个循环语句,属于当型循环。这里和if有的相似,如果要进入循环,那么while(表达式)中括号里的表达式要为真,上代码:

这是一个求最小公倍数和最大公约数的程序,可见得只有满足while括号里的表达式才会执行循环,一旦表达式不满足就会跳出while,执行中括号后面的语句。

        do...while也是一个循环,属于直到型循环。它会先执行一遍循环体中的语句,再判断循环控制表达式是否为真,所以不管循环条件为真还是为假,循环内的语句都会被执行一遍。要注意的是do...while语句while()后面要加分号!可能是我在嵌入式这块还没走太深哈哈哈哈,没怎么用到过do...while语句,所以我们也就一笔带过了哈。

        for语句    

         for语句是C语言中第三中循环语句,一般形式:for(初始化表达式;循环控制表达式;增值表达式),要注意的是for语句三个表达式之间的分隔符是分号,有且只有两个,既不能多又不能少。好了话不多说,上代码:

这个程序是水仙花数,不了解的小伙伴可以去查一查。其中n=100就是初始化循环次数,n<1000是循环条件,n++是增值表达式,它还可以这样写:

这里要稍微注意一下n的值,虽然条件是n<1000,但是最后打印n的值的时候,n=1000,因为就算结束了循环,n++还会执行一次。

        break和continue语句

         我们直接看代码:

这是continue语句

这是break语句

显然易见:break语句是直接将循环终止,从循环语句后的第一条语句开始继续执行;而continue语句只是跳过continue语句后面尚未执行的语句,开始下一次循环。 

注意,在嵌套循环的情况下,break语句和continue语句只对包含它们的最内层的循环语句起作用,不能用break语句跳出多重循环。

        好了,以上就是本篇文章的所以内容啦,总结的比较简单,若有不足之处希望各位大佬批评指正。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

STRIVE1151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值