第四章 逻辑运算和判断选择(三)

2023-12-13 09:29:39

一、if语句详解

前面讲过程序的三种基本结构顺序结构、选择结构、循环结构。

if语句是选择结构的代表性语句,if语句用来判断给定的条件是否满足, 根据判断的结果(真或者假)决定执行什么样的操作。

1、if语句的三种形式

1)if(判断表达式)语句

如果判断表达式中的条件满足则执行对应的语句(1条或多条语句),否则直接跳过这些语句继续执行后面的内容。

2)if(判断表达式)语句1; else 语句2;

如果判断表达式中的条件满足,则执行语句1(1条或多条语句) ,否则执行语句2 (1条或多条语句)。

3、

if(判断表达式)语句1;

else if(判断表达式 2) 语句 2 ;

else if(判断表达式 3) 语句 3;

...

else if(判断表达式 3) 语句 m;

else 语句n;

注意:

1)if后面是个圆括号,通俗地说就是用圆括号把这个判断表达式括起来。

2)如果if语句包含多条语句,必须用{},如果只有1条语句,可以省略{}。

3)if语句可以单独使用,但 else语句不能单独使用 ,必须与if语句配对使用,如果出现了 else,必然会对应一个 if 语句。

2、if语句的嵌套

在 if语句中包含一个或者多个 if语句称为 if语句的嵌套。

为了防止混乱,也为了其他人能够清晰地阅读自己所写的代码,该加{}的地方一定要加,该缩进的地方也一定要缩进。

3、条件运算符和 switch 语句

1)条件运算符

条件表达式:表达式1?表达式2:表达式3

条件表达式中用到的"? :"组合被称为条件运算符, 条件运算符有三个操作对象,也被称为三 自运算符,它是 C 语言中唯一一个三目运算符。

例:

下面是if语句,将 a,b 两个变盘中的最大值赋给 max 变量:

等价于下面的条件运算符:

(a>b)?a:b条件表达式是这样执行的:如果(a>b)的条件为真,则取a的值作为整个表达式的值,否则取b的值作为整个表达式的值。

注意:

(1)条件运算符优先级高于赋值运算符 ,所以是先计算条件表达式的值,再将计算结来赋值给 max。

(2)条件运算符的结合顺序是从右到左

例:a>b?a:c>d?c:d 等价于 a>b?a:(c>d?c:d);

2)switch语句

if语句一般用途是针对两个分支的比较和选择,而 switch语句一般用于处理多分支选择,多分支选择也可以使用 if else if ... else if...语句来实现,但这种连续使用多个 else if实现的多分支选择,可读性不如 switch语句好。

switch(表达式){

case常量表达式1:

1 行或多行语句;

break;

case常量表达式2:

1 行或多行语句;

break;

...

case常量表达式n:

1 行或多行语句;

break;

default:

1 行或多行语句;

break;

}

swirch后面表达式的值若满足(等于)任何某个 case后面的常量表达式值,则执行case后面的 1行或多行语句 ,直到遇到 break语句停止,然后跳出整个switch语句并继续 switch后面语句的执行,如果所有 case条件都不满足,则会执行default 中包含的1行或多行语句 ,然后跳出整个 switch 语句。

例:

说明:

(1)switch 后面的表达式,可以是整型表达式,也可以是字符型表达式 ,甚至可以是枚举型数据(后面会讲到)。还可能是其他类型表达式,但那比较罕见。

(2)每个 case后面的常量表达式值彼此之间必须互不相同,不然会出现编译错误。

(3)各个 case之间、case和 default之间的顺序没有影响,谁在上面,谁在下面都可以。

(4)一定不要忘记 break语句,每个case的最后,以及 default的最后,都有一个break,否则,程序执行会出现问题。

(5)case 中如果包含多行语句,并不需要使用{}将多行语句括在一起 ,case条件一旦满足 ,会自动顺序执行本case后面的所有语句。也有人习惯用{}把要执行的语句括起来,这也完全可以。

(6)default可以没有,那么当所有 case条件都不满足,整个 switch就不被执行。

(7)多个 case 条件可以紧挨着写在 一起,从而在其中任意一个条件成立时共用一组执行行语句。

case 3:

case 4:

printf("值为3或4\n"); //switch后表达式的值为3或4都执行这行代码

break;

文章来源:https://blog.csdn.net/weixin_30479905/article/details/134948945
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。