第四章 逻辑运算和判断选择(三)
一、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;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!