【C语言】switch语句以及三目运算符

目录

概述

Switch语句

语法

流程图

具体代码 

三目运算符

语法

代码实例


概述

在上一篇文章中,我们已经提到了C语言支持最基本的三种程序运行结构中处在顺序结构之一的if语句了,而今天我们再次讨论一个顺序结构之一的语句,那就是switch语句。

Switch语句

再上一个文章中我们知道如果我们想要去执行多条件分支语句,我们需要去使用多个if...else 去嵌套,这样十分的繁琐复杂,而且还很容易出错,所以今天我们来介绍以下Switch

其主要作用就是可以执行多条件分支语句

语法

switch(表达式){ 

    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;
    … 
    case 常量表达式n:  语句n;
    default:  语句n+1;
}

 一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

流程图

switch 语句必须遵循下面的规则:

  • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
  • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
  • 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
  • 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
  • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
  • switch语句中表达式类型只能是整型或者字符型
  • case里如果没有break,那么程序会一直向下执行

具体代码 

int main() {

	//书本评分 
	//10 ~ 9   经典   
	// 8 ~ 7   非常好
	// 6 ~ 5   一般
	// 5分以下 不好

	int score = 0;
	cout << "请给书本打分" << endl;
	cin >> score;

	switch (score)
	{
	case 10:
	case 9:
		cout << "经典" << endl;
		break;
	case 8:
		cout << "非常好" << endl;
		break;
	case 7:
	case 6:
		cout << "一般" << endl;
		break;
	default:
		cout << "不好" << endl;
		break;
	}

	system("pause");

	return 0;
}

 

总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间

三目运算符

三目运算符,又称条件运算符,是计算机语言的重要组成部分。它是唯一有 3 个操作数的运算符,所以有时又称为三元运算符,其实三目运算符和选择语句类似。

语法

<表达式1> ? <表达式2> : <表达式3>;

问号前面的条件表达式的部分是要测试的条件。这就像 if 语句的括号中的表达式。如果条件是真的,则执行 ? 和 : 之间的语句;否则,执行 : 之后的部分。

就例如下面这个语句:

x < 0 ? y = 10 : Z = 20;

首先判断 x是否小于0,如果x小于0的话,那么就执行?和:中间的语句,也就是 y=10, 反之如果x大于等于0的话,那么就执行:后面的语句,也就是Z=20。

代码实例

int main() {

	int a = 10;
	int b = 20;
	int c = 0;

	c = a > b ? a : b;
	cout << "c = " << c << endl;

	//C++中三目运算符返回的是变量,可以继续赋值

	(a > b ? a : b) = 100;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

	system("pause");

	return 0;
}

总结:和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰

猜你喜欢

转载自blog.csdn.net/qq_62464995/article/details/129646484