20240727嵌入式学习笔记

目录

流程控制

关系运算

逻辑运算

选择语句

if语句

单分支

双分支

多分支

条件运算

switch语句


流程控制

C语言中整个程序的流程分为三个结构:

顺序结构、分支结构、循环结构。

整个程序从总体上看属于顺序结构(从开始到结束),在其中穿插着分支结构和循环结构。

分支结构又称为选择结构,需要有判断条件来选择不同情况。

在C语言中提供了两种运算作为判断条件,分别为关系运算和逻辑运算。

关系运算

大于、大于等于、等于、不等于...

关系运算反应大小关系,通过关系表达式来表示。

int a = 5;
a < 1;    //值为0

表达式的值由大小关系成立与否决定,当大小关系不成立,表达式输出结果为0;大小关系成立时,输出结果为1;

需要注意的是关系表达式的结果为真假逻辑值。在其他语言如Java、Python中为布尔类型,值为true或false。但在C语言中没有布尔类型。表达式的真假由整数1或0表示。

int a = 5;
int b;
b = 0 < a < 1;
//b值为0

在上述代码中,b 的值为等号右边关系表达式的值。根据结合性,0 < a < 1 可以看作 (0 < a) < 1;0 < a 的大小关系成立,逻辑值为真,即 1 ,所以表达式看作 0 < 1 ,大小关系不成立,逻辑值为假,所以最后的输出值为 0 。

在混合运算时要考优先级再进行结合。下列代码中加法运算优先级高于关系运算,先由加法运算符进行结合: c = ( 1 + a ) >= b ,c = 2 >= 2 ,c = 1 。 

int a = 1;
int b = 2;
int c;
c = 1 + a >= b;
//b值为1

逻辑运算

与、或、非

与:&&,一真则真,双目运算,优先级高于或

1 && 2 = 1
0 && 1 = 0

或: ||,一真则真,双目运算,优先级低于与

1 || 2 = 1
0 || 2 = 1
0 || 0 = 0

非: !,真假转换,单目运算优先级高于双目

!1 = 0
!0 = 1
注意

在逻辑运算表达式中,与或运算按从左向右进行。但在或运算中,只需要一个值就可以得出整个表达式的值,因此,第一个值为逻辑真时,直接得出结果为真,或运算符右边的表达式不经过计算。

int i = 1;
(1 + 2) || (++i) = 1; i = 1;
//(1 + 2)为真,逻辑运算表达式结果直接为1,++i不经过运算,仍为原值

选择语句

if语句、switch语句

if语句

单分支、双分支、多分支、条件运算

单分支
if(表达式)
{复合语句}
双分支
if(表达式)
{语句1}

else
{语句2}
多分支
if(表达式)
{语句1}

else if(表达式2)
{语句2}

else if(表达式3)
{语句3}
.
.
.
else if(表达式n)
{语句n}

else
{语句n+1}
条件运算
表达式1 ? 表达式2 : 表达式3

首先判断表达式1是否成立,若成立则执行表达式2;若不成立,则执行表达式3 。在语法含义上条件运算是if-else语句的一种简写形式,等同于

if(表达式1)
{表达式2}

else
{表达式3}

但需要注意的是,条件运算的优先级高于赋值运算,因此在表达式2和表达式3中进行赋值操作时,会出现结合错差。所以在条件运算中赋值时,需要将赋值语句用括号包围,或直接利用运算表达式的输出值进行赋值操作。

a > b ? max = a : max = b;    //错误写法
a > b ? (max = a) : (max = b);
max = (a > b ? a : b);

switch语句

switch(表达式)
{
    case (常量表达式1) :
        语句1
        break;
    case (常量表达式2) :
        语句2
        break;
    case (常量表达式n) :
        语句n
        break;
        .
        .
        .
    default :
        语句n+1
}

表达式的结果与case下的常量表达式进行匹配,匹配成功执行case后的语句。在break语句处结束switch语句,若无break语句,则执行下课i额所有case语句中的语句,直到switch语句结束;若表达式结果没有对应case下的常量表达式,则执行default下的语句。

注意

case、default的实际意义为标签(lable),指向后面的可执行语句。表达式的结果与标签匹配,匹配后执行可执行语句。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值