浅谈C++分支语句和逻辑运算符

一、if语句

if语句的格式为:

statement1
if (测试条件)
 statement2
statement3

执行到if语句时,若测试条件为真,则执行statement2,否则跳过语句statement2执行语句statement3。如下图所示:
在这里插入图片描述
和循环的测试条件一样,if测试条件一般为关系表达式,结果为bool值。不是bool值会被强制转换为bool值,非0为true,0为false。

代码演示:

// 输入字符
char ch;
cin >> ch;
// 判断
if (ch == 'a')
{
	cout << "哈哈" << endl;
}
cout << "呵呵" << endl;

若输入的字符为a,显示哈哈,否则只显示呵呵。

二、 if else语句

if else语句格式为:

statement1
if (测试条件)
 statement2
else
 statement3
statement4

执行到if语句时,若测试条件为真,则执行语句statement2,否则执行语句statement3。如下图所示:
在这里插入图片描述
代码演示:

// 输入
char ch;
cin >> ch;
// 判断
if (ch == 'a')
{
	cout << "哈哈" << endl;
}
else
{
	cout << "呵呵" << endl;
}
cout << "结束" << endl;

如果输入输入a显示哈哈和结束,否则显示呵呵和结束。

可以连续使用if else语句,如下:

if (测试条件1)
 statement1
else if (测试条件2)
 statement2
else if (测试条件3)
 statement3

else
 statementN

上面的代码实际上只是一个if else包含在另一个else中:

if (测试条件1)
{
 statement1
}
else
{
 if (测试条件2)
 {
  statement2
 }
 else
 {
  if(测试条件3)
  …
 }
}

连续使用if else语句实际上就是提供多个选择,第一个条件不满足时,判断第二个条件,第二个条件不满足时判断第三个条件…,然后执行相符的语句。

代码演示:

// 输入分数
int score;
cin >> score;
// 判断
if (score >= 90)
	cout << "优秀" << endl;
else if (score >= 80)
	cout << "不错" << endl;
else if (score >= 60)
	cout << "一般" <<endl;
else
	cout << "差劲" <<endl;

分数大于等于90显示优秀,80-90显示不错,60-80显示一般,60一下显示差劲。

三、逻辑表达式

逻辑表达式由逻辑运算符和表达式组成,结果为bool值。C++有三种逻辑运算符:逻辑OR运算符——||,逻辑AND运算符——&&,逻辑NOT运算符——!。

1. 逻辑OR运算符——||

使用格式:表达式 || 表达式
当左右两侧表达式中有一侧表达式的值为true,则整个表达式的值为true,只有左右两侧表达式的值都为false,整个表达式的值才为false。

代码演示:

15 > 10 || 5 > 3  // true
2) 5 > 10 || 5 > 20  // false

由于逻辑运算符(||)的优先级比关系运算符低,所以上述表达式实际上为:

1) (5 > 10) || (5 > 3)  // ture
2) (5 > 10) || (5 > 20)  // false

不知道优先级和结合顺序的时候,使用圆括号。

注意:
逻辑运算符(||)先计算左边的表达式,再计算右边的表达式。若左边的表达式为true,则整个逻辑表达式的值已经确定(true),右边的表达式就不进行计算。

代码演示:
在这里插入图片描述
上述测试条件 a || a++,a的值为1,左边表达式的值为true,整个测试条件的结果为true,则不计算右边表达式a++,最终显示a的值仍为1。
在这里插入图片描述

2. 逻辑AND运算符——&&

使用格式:表达式 && 表达式
当左右表达式中有一个表达式的值为false,则整个逻辑表达式的值为false,当左右两边的表达式的值都为true,整个表达式的值才为true。

代码演示:

110 > 5 && 3 > 8  // false
210 > 5 && 20 > 15  // true

注意:
逻辑运算符(&&)和逻辑运算符(||)一样,都是先计算左边的表达式,再计算右边的表达式。若左边表达式的值为false,则整个逻辑表达式的值为false,右边的表达式不进行计算。

3. 逻辑运算符NOT——!

使用格式:! 表达式
对表达式的bool值取反,若表达式的值为true,则整个逻辑表达式的值为false,若表达式的值为false,则整个逻辑表达式的值为true。

代码演示:

1!(10 > 5)  // false
2!(20 < 5)  // true

注意:
由于逻辑运算符(!)的优先级较高,一般把后面的表达式放在圆括号中。

四、break和continue语句

break语句和continue语句都是用来控制循环的语句。

1. break语句

使用格式:break;
跳出循环

代码演示:

// 打印0-9的数字
for (int i = 0; i < 10; ++i)
{
	cout << i << " ";
	// i = 5时跳出循环
	if (i == 5)
		break;  // 跳出循环
}
cout << endl;  // 分割
cour << "结束" << endl;

上面代码原本要打印数字0-9,但是打印数字0-5之后,i的值为5,满足if语句测试条件i == 5,执行break语句跳出循环,显示结束二字,程序结束。
在这里插入图片描述

注意:
若有多层循环,break只跳出包裹break语句最内层的循环。

2. continue语句

使用格式:continue;
跳过本次循环的剩余语句。

代码演示:

// 打印数字0-9
for (int i = 0; i < 10; ++i)
{
	if (i == 5)
		continue;  // 跳过本次循环的剩余语句
	cout << i << " ";
}
cout << endl;  // 分割
cout << "结束" << endl;

上面代码原本要打印数字0-9,但是当i的值为5时,满足if语句测试条件,执行continue语句,跳过剩余语句,数字5未打印。
在这里插入图片描述

五、switch语句

使用格式:

switch (整型常量/整型变量 a)
{
 case 整型常量1 : statement1;
         break;
 case 整型常量2 : statement2;
         break;

 default: statementN;

执行到switch语句时,编译器会寻找与a相同的case标签,然后执行冒号(:)后面的语句,往下依次执行直到执行完毕switch所有语句。而往往只需要执行一个标签对应的语句,所以需要在每个标签的最后加上break语句,跳出switch。当没有case标签与a相同时,则执行default。若既没有标签与a对应,又没有default,则switch语句不会执行任何操作。

代码演示:

1. 无break语句

// 输入选项
int input;
cin >> input;
// 判断
switch (input)
{
case 1: cout << "你选择了第1个case标签" << endl;
case 2: cout << "你选择了第2个case标签" << endl;
default:
	cout << "没有这个选项" << endl;
}

在这里插入图片描述

2. 有break语句

// 输入选项
int input;
cin >> input;
// 判断
switch (input)
{
case 1: cout << "你选择了第1个case标签" << endl;
	break;
case 2: cout << "你选择了第2个case标签" << endl;
	break;
default:
	cout << "没有这个选项" << endl;
}

在这里插入图片描述

3. 无对应标签

// 输入选项
int input;
cin >> input;
// 判断
switch (input)
{
case 1: cout << "你选择了第1个case标签" << endl;
	break;
case 2: cout << "你选择了第2个case标签" << endl;
	break;
default:
	cout << "没有这个选项" << endl;
}

在这里插入图片描述

4. 既无标签对应,又无break语句

// 输入选项
int input;
cin >> input;
// 判断
switch (input)
{
case 1: cout << "你选择了第1个case标签" << endl;
	break;
case 2: cout << "你选择了第2个case标签" << endl;
	break;
}

在这里插入图片描述

六、 条件运算符——?:

使用格式:表达式1 ? 表达式2 : 表达式3
若表达式1的值为true,则整个表达式的值为表达式2的值,若表达式1的值为false,则整个表达式的值为表达式3的值。

代码演示:

// 输入两个数,输出较大的那个数
int a, b;
cout << "输入两个数: " << endl;
cin >> a >> b;
cout << "较大的数为: " << (a > b ? a : b) << endl;

若a大于b则整个表达式的值为a,显示a,否则整个表达式的值为b,显示b。
在这里插入图片描述

注意:
条件运算符的优先级较低,使用时需要使用圆括号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值