VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 12748|回复: 170

《实用C++》第11课:if 语句实现逻辑运算与冒号表达式

  [复制链接]
51_avatar_middle
最佳答案
11 
online_admins 发表于 2017-9-7 00:39:50 | 显示全部楼层 |阅读模式

1、逻辑运算概述:
为什么会有逻辑运算呢?举个例子,上节课的一段小代码:
int zhangsan_age = 0, zhangsan_sex = 0;
cin >> zhangsan_age >> zhangsan_sex;

if (zhangsan_age < 18)
{
        if (zhangsan_sex == 1)
        {
                cout << "张三是个男孩" << endl;
        }
}

即:要求年龄在 18 岁以下,性别是男性,两个条件都满足的前提下,才进行打印:张三是个男孩
又或者,我让你用 if 进行这个判断,判断 zhangsan_age 年龄在 1-18岁之间,看是否满足条件?怎么判断呢?
可以这样:
if (zhangsan_age >= 1)
{
        if (zhangsan_sex <= 18)
        {
                cout << "张三是个男孩" << endl;
        }
}

这样写很是麻烦,而且会嵌套了好几层,有没有更简便的写法呢?当然有了,就是使用逻辑运算符:
if (zhangsan_age >= 1 && zhangsan_sex <= 18)
{
        cout << "张三是个男孩" << endl;
}

简单吧?一个 if 就搞定了。

2、C++中提供了三种逻辑运算符:
①、&& 逻辑与 相当于其他语言中的 AND
②、||  逻辑或 相当于其他语言中的 OR
③、!   逻辑非 相当于其他语言中的 NOT

3、逻辑运算符的运算规则:a 和 b 是表达式
a && b 若 a 和 b 同时为真,a && b 的结果为真,只要有一个为假,则 a && b 的结果为假
a || b  若 a 或 b 其一为真,a || b 的结果为真,若 a 和 b 同时为假,则 a || b 的结果为假
!a       若 a 为真,则 !a 为假,若 a 为假,则 !a 的结果为真

int zhangsan_age = 0;
cin >> zhangsan_age;

if (zhangsan_age < 14 || zhangsan_age > 60)
{
        cout << "张三是个小孩或者老人,不能欺负他" << endl;
}

备注:咱们上面说了这么多真和假,一般逻辑表达式的值是一个逻辑的量 “真” 或 “假”。那么反应到我们程序代码中得到运算结果时,以数值 1 代表 “真”,数值 0 代表 “假”。一般更宽泛的做法是:数值 0 代表 “假”,非0都代表 “真”。

举几个例子:
若 int x = 5; 则 !x 的值就是0,因为 x 的值是5,非0,所以是真,!x 就是假了,也就是0了;
若 int x = 5, y = 4; 那么 x && y 的结果就是真,int z = x && y; 你会发现 z 的值是1;
若 int x = 5, y = 4; 那么 !x || y 的结果是多少呢?到底是先算逻辑非,还是先算逻辑或呢?这就涉及到他们的运算符优先级了。大家可以找下《实用C++》第8课的课程说明文档,我当时给大家打包了一个运算符优先级的图标,大家可以查一下C++中的三个逻辑运算符的优先级是怎么样的顺序呢?https://www.cctry.com/thread-278817-1-1.html

4、逻辑运算符的优先级:算是本节课的小作业,大家课后完成!

5、冒号表达式:
冒号表达式又叫条件表达式,是唯一一个三目运算符,就是需要三个参数的运算符。先举个 if 语句的例子,求出 变量 x 和 y 的最大值,并打印出来:
int max = 0;
int x = 0, y = 0;
cin >> x >> y;
if (x > y)
{
        max = x;
}
else
{
        max = y;
}

cout << "最大数是:" << max << endl;

求 x 和 y 中的较大数,我用了一个 if-else,那么有没有简单一点的方法呢?答案是当然有,就是要讲解的这个冒号表达式:
max = x > y ? x : y;
就这么一句话,就可以将 x 和 y 中较大的数的值赋值给 max 变量,怎么样,方便吧?

6、冒号表达式的规则:
表达式1 ? 表达式2 : 表达式3
若表达式1为真,则返回表达式2的值,若表达式1为假,则返回表达式3的值。如此而已!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
教程在线观看地址:
https://www.bilibili.com/video/av38388453/?p=12
MP4高清视频下载地址:链接:https://pan.baidu.com/s/1ABM1qHCdwYp-tdpQ99-Ubw 提取码:c2f7
本节课件下载(回复后可见):
游客,如果您要查看本帖隐藏内容请回复

备注:VIP会员可免费下载本站所有资源(点击查看)
提示:通过购买VC驿站U盘打包(点击查看)也可加入终身Vip会员^_^




上一篇:《实用C++》第10课:if 语句实现关系运算
下一篇:《实用C++》第12课:用switch语句实现多分支选择结构
74_avatar_middle
最佳答案
0 
在线会员 发表于 2017-9-7 09:35:44 | 显示全部楼层
三目运算符
78_avatar_middle
最佳答案
0 
在线会员 发表于 2017-9-7 09:49:37 | 显示全部楼层
期待中,谢谢
08_avatar_middle
最佳答案
0 
在线会员 发表于 2017-9-7 21:08:08 | 显示全部楼层
学习了,谢谢大佬分享
94_avatar_middle
最佳答案
0 
online_vip 发表于 2017-9-11 20:04:35 | 显示全部楼层
起学习 一起进步。
39_avatar_middle
最佳答案
0 
online_vip 发表于 2017-9-13 09:21:54 | 显示全部楼层
期待老师的课程早日发布
57_avatar_middle
最佳答案
0 
online_vip 发表于 2017-9-15 20:53:08 | 显示全部楼层
看看。。。。。
67_avatar_middle
最佳答案
0 
online_vip 发表于 2017-9-26 21:52:33 | 显示全部楼层
感谢有你
42_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-20 09:24:13 | 显示全部楼层
继续学习~~~
98_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-20 15:28:23 | 显示全部楼层
更总学习  

60_avatar_middle
最佳答案
0 
online_vip 发表于 2017-10-20 17:13:51 | 显示全部楼层
继续学习
22_avatar_middle
最佳答案
0 
online_vip 发表于 2017-10-20 21:29:24 | 显示全部楼层
来看看啊
72_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-21 14:50:12 | 显示全部楼层
看看是什么情况
78_avatar_middle
最佳答案
0 
online_vip 发表于 2017-10-22 09:08:21 | 显示全部楼层
学习,学习
46_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-22 20:26:46 | 显示全部楼层
多谢分享。。。。。。。。。。。
10_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-25 10:23:51 | 显示全部楼层
继续下载新教程,支持老大
80_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-26 08:49:47 | 显示全部楼层
继续学习!!!
00_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-26 19:11:47 | 显示全部楼层
三目运算符
15_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-27 21:50:04 | 显示全部楼层
谢谢分享谢谢分享
17_avatar_middle
最佳答案
0 
online_vip 发表于 2017-10-28 10:00:00 | 显示全部楼层
顶。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-12-16 04:28

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表