分支和跳转

分支和跳转

if语句

概念

  if语句被称为分支语句或选择语句,因为它相当于一个交叉点,程序要在两条分支中选择一条执行。

形式

if ( expression )
statement

作用

  如果对expression求值为真(非0),则执行statement;否则,跳过statement。这与while循环有点像,先判断条件,再执行。但是if条件只测试和执行一次,而while循环可测试执行多次。

if else语句

形式

if ( expression )

statement1

else

statement2

作用

  如果expression为真(非0),则执行statement1;如果expression为假或

0,则执行else后面的statement2。

多重选择else if

形式

if(expression 1)
statement1
else if(expression 2)
statement2
else if(expression 3)
statement3
else 
statement4

作用

  expression哪个为真(非0)就执行谁后面的statement,若表达式都不成立,则执行else后面的statement。

注意

  • 一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。

  • 一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。

  • 一边else if写在一起不分行,在浏览程序时,这种形式让读者更容易看清楚各项选

    择。

if else的配对

/*例1*/
if ( expression 1)
if ( expression 2) 
statement 1
else 
statement 2
/*例2*/
if ( expression 1)
{
if ( expression 2) 
statement 1
}
else 
statement 2

规则

  如果没有花括号,else与离它最近的if匹配,除非最近的if被花括号括起来。如例1,else与if (expresssion 2)配对,而例2有花括号,else与if(expression 1)配对。

多层嵌套的if语句

  前面介绍的if…else if…else序列是嵌套if的一种形式,从一系列选项中选择一个执行。有时,选择一个特定选项后又引出其他选择,这种情况可以使用另一种嵌套 if。

形式

if(expression 1)
{
   if(expression 2)
   {
    statement
   }
}

作用

  当第一个if通过后,检查expression 2进行进一步选择。

多重选择swich

  使用条件运算符和 if else 语句很容易编写二选一的程序。然而,有时程序需要在多个选项中进行选择。可以用if else if…else来完成。但是,大多数情况下使用switch语句更方便。

形式

switch ( expression )
{
case label1 : statement1
case label2 : statement2
...
default : statement3
}


作用

  程序根据expression的值跳转至相应的case标签处。然后,执行剩下的所有语句,除非执行到break语句进行重定向。如果没有case标签与expression的值匹配,控制则转至标有default的语句(如果有的话);否则,将转至执行紧跟在switch语句后面的语句。

注意

  • break语句可用于循环和switch语句中,但是continue只能用于循环中。如果switch语句在一个循环中,continue便可作为switch语句的一部分。这种情况下,就像在其他循环中一样,continue让程序跳出循环的剩余部分,包括switch语句的其他部分。
  • case一般都指定一个值,不能使用一个范围。
  • switch在圆括号中的测试表达式的值应该是一个整数值(包括char类型)。case标签必须是整数类型(包括char类型)的常量或整型常量表达式。不能用变量作为case标签。

多个标签

  可以有多个case执行同一条语句的情况,如:

switch ( expression )
{
case label1 :
case label2 : statement2
...
default : statement3
}

swich和if else选择

  • 如果是根据浮点类型的变量或表达式来选择,就无法使用 switch。
  • 如果根据变量在某范围内决定程序流的去向,使用 switch 就很麻烦,这种情况用if就很方便。如,if (integer < 1000 && integer > 2)。使用switch要涵盖以上范围,需要为每个整数(3~999)设置case标签。

逻辑运算符

  if 语句和 while 语句通常使用关系表达式作为测试条件。有时,把多个关系表达式组合起来会很有用。这种情况下可以使用逻辑运算符。

与或非

  C有三种逻辑运算符:

image-20230106163157380

作用

当且仅当exp1和exp2都为真时,exp1 && exp2才为真;

如果exp1或exp2为真,则exp1 || exp2为真;

如果exp1为假,则!exp1为真;如果exp1为真,则!exp1为假。

备选拼写

  C99标准新增了可代替逻辑运算符的拼写,它们被定义在ios646.h头文件中。如果在程序中包含该头文件,便可用and代替&&、or代替||、not代替!。

优先级

  • !运算符的优先级很高,比乘法运算符还高,与递增运算符的优先级相同,只比圆括号的优先级低。
  • &&运算符的优先级比||运算符高,但是两者的优先级都比关系运算符低,比赋值运算符高。

求值顺序

  C保证逻辑表达式的求值顺序是从左往右。&&和||运算符都是序列点,所以程序在从一个运算对象执行到下一个运算对象之前,所有的副作用都会生效。

  &&一般用于表示范围,在C语言中不允许使用数学写法,如90 <= range <= 100,这样的代码有语义错误,相当于(90 <= range) <= 100子表达式90 <= range的值要么是1(为真),要么是0(为假)。这两个值都小于100,所以不管range的值是多少,整个表达式都恒为真。因此,在范围测试中要使用&&。如range>=90&&range<=100。

条件运算符

  C提供条件表达式作为表达if else语句的一种便捷方式,该表达式使用?:条件运算符。条件运算符是C语言中唯一的三元运算符。该运算符分为两部分,需要 3 个运算对象。

形式

expression1 ? expression2 : expression3

解释

测试中要使用&&。如range>=90&&range<=100。

条件运算符

  C提供条件表达式作为表达if else语句的一种便捷方式,该表达式使用?:条件运算符。条件运算符是C语言中唯一的三元运算符。该运算符分为两部分,需要 3 个运算对象。

形式

expression1 ? expression2 : expression3

解释

  如果 expression1 为真(非 0),那么整个条件表达式的值与 expression2的值相同;如果expression1为假(0),那么整个条件表达式的值与expression3的值相同。需要把两个值中的一个赋给变量时,就可以用条件表达式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值