C语言 选择(分支)

if 语句(分支语句/选择语句)

结构:

if ( expressio )
       statement

       如果对 expression 求值为真(非0),则执行 statement ;否则,跳过 statement 。与 while 循环一样,statement 可以是一条简单语句或复合语句。if 语句的结构和 while 语句很相似,它们的主要区别是:如果满足条件可执行的话,if语句只能测试和执行一次,而 while 语句可以测试和执行多次。
       通常,expression 是关系表达式,即比较两个量的大小。如果 expression 为真,则执行statement 。否则,忽略 statement 。概括地说,可以使用任意表达式,表达式的值为0则为假。statement 部分可以是一条简单语句,或者是一条用花括号括起来的复合语句(或块)。
PS:
注意,即使if语句由复合语句构成,整个if语句仍被视为一条语句。


if else语句

       if else形式,可以在两条语句之间作选择。
结构:

if ( expression )
      statement1
else
      statement2

       如果 expression 为真(非0),则执行 statement1;如果 expression 为假或0,则执行 else 后面的 statement2 。statement1 和 statement2 可以是一条简单语句或复合语句。C 并不要求一定要缩进,但这是标准风格。缩进让根据测试条件的求值结果来判断执行哪部分语句一目了然。
如果要在 if 和 else 之间执行多条语句,必须用花括号把这些语句括起来成为一个块。
       if 语句用于选择是否执行一个行为,而 else if 语句用于在两个行为之间选择。

条件运算符:?:
 

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

expression1?expression2;expression3

        如果 expression1 为真(非 0),那么整个条件表达式的值与 expression2 的值相同;如果expression1为假(0),那么整个条件表达式的值与 expression3 的值相同。

if ( expression1 )
      expression2;
else
      expression3;


多重选择else if

if ()
       statement
else
if ()
       statement
else
if ()
       statement
else
......


       该程序由一个 if else 语句组成,else 部分包含另一个 if else 语句,该 if else 语句的 else 部分又包含另一个 if else 语句。第2个 if else 语句嵌套在第 1个 if else 语句中,第3个 if else 语句嵌套在第2个 if else 语句中。回忆一下,整个 if else 语句被视为一条语句,因此不必把嵌套的 if else 语句用花括号括起来。当然,花括号可以更清楚地表明这种特殊格式的含义。

if ()
      statement
else if ()
      statement
else if ()
      statement
......
else
      statement


else 与 if  配对    

C语言 选择(分支)_第1张图片



         规则是,如果没有花括号,else与离它最近的if匹配,除非最近的if被花括号括起来。

         第1个例子的缩进使得else看上去与第1个if相匹配,但是记住,编译器是忽略缩进的。


总结:用if语句进行选择


关键字:if、else
一般注解:下面各形式中,statement 可以是一条简单语句或复合语句。表达式为真说明其值是非零值。
形式1:

if ( expression )
      statement
如果 expression 为真,则执行 statement 部分。


形式2:

if (expression)
      statement1
else
      statement2
如果 expression 为真,执行 statement1 部分;否则,执行 statement2 部分。


形式3:

if (expression1)
       statement1
else if (expression2)
       statement2
else
       statement3
       如果 expression1 为真,执行 statement1 部分;如果 expression2 为真,执行 statement2 部分;否则,执行 statement3 部分。


多重选择:switch和break


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


break语句:让程序离开 switch 语句,跳至 switch 语句后面的下一条语句(见图7.4)。如果没有 break 语句,就会从匹配标签开始执行到 switch 末尾。

C语言 选择(分支)_第2张图片


格式

switch(整型表达式)
{
      case 常量1:
            语句
      case 常量2:
            语句
      ......
      default:
            语句
}


       要对紧跟在关键字 switch 后圆括号中的表达式求值。在程序清单 7.11中,该表达式是刚输入给 ch 的值。然后程序扫描标签列表,直到发现一个匹配的值为止。然后程序跳转至那一行。如果没有匹配的标签怎么办?如果有 default :标签行,就跳转至该行;否则,程序继续执行在 switch 后面的语句。
        程序根据 expression 的值跳转至相应的 case 标签处。然后,执行剩下的所有语句,除非执行到 break 语句进行重定向。expression 和 case 标签都必须是整数值(包括 char 类型),标签必须是常量或完全由常量组成的表达式。如果没有 case 标签与 expression 的值匹配,控制则转至标有 default 的语句(如果有的话);否则,将转至执行紧跟在 switch 语句后面的语句。


switch 和 if else 的选择


        如果根据浮点类型的变量或表达式来选用,就无法使用switch;
        如果根据变量在某范围内决定程序流的去向,使用switch就很麻烦,这种情况用if就很方便。


goto语句


       goto语句使程序控制跳转至相应标签语句。冒号用于分隔标签和标签语句。标签名遵循变量命名规则。标签语句可以出现在goto的前面或后面。

goto label;
     .
     .
     .
label:statement

你可能感兴趣的:(C语言,c语言)