条件运算符和条件表达式
如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。
条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式为:
表达式 1? 表达式 2: 表达式 3
其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值。
条件表达式通常用于赋值语句之中。
例如条件语句:
if(a > b) max = a;
else max = b;
//可写为
max = (a > b) ? a : b;
执行该语句的语义是:如 a>b 为真,则把 a 赋予 max,否则把 b 赋予 max
最终例如:还是求两个数最大值
#include<stdio.h>
int main() {
int a, b, max;
printf("\n input two numbers: ");
scanf("%d%d", &a, &b);
printf("max=%d", a>b?a:b);
return 0;
}
用switch语句实现多分支选择结构
C语言还提供了另一种用于多分支选择的 switch 语句, 其一般形式为:
switch(表达式){
case 常量表达式 1: 语句 1;
case 常量表达式 2: 语句 2;
…
case 常量表达式 n: 语句 n;
default : 语句 n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有 case 后的语句。如表达式的值与所有 case 后的常量表达式均不相同时,则执行 default 后的语句
例如
#include<stdio.h>
int main() {
int a;
printf("input integer number: ");
scanf("%d", &a);
switch (a){
case 1: printf("Monday\n");
case 2: printf("Tuesday\n");
case 3: printf("Wednesday\n");
case 4: printf("Thursday\n");
case 5: printf("Friday\n");
case 6: printf("Saturday\n");
case 7:printf("Sunday\n");
default:printf("error\n");
}
return 0;
}
本程序是要求输入一个数字,输出一个英文单词。但是当输入 3 之后,却执行了 case3 以及以后的所有语句,输出了 Wednesday 及以后的所有单词
C语言还提供了一种 break 语句,专用于跳出 switch 语句,break 语句只有关键字 break,没有参数。在后面还将详细介绍。修改例题的程序,在每一 case 语句之后增加 break 语句,使每一次执行之后均可跳出switch 语句,从而避免输出不应有的结果
作者: 路羽, 转载或复制请以 超链接形式 并注明出处 路羽博客。
原文地址: 《C语言-选择结构程序设计(四)》 发布于2022-7-27
评论