C++入门教程(6):布尔和判断运算

本文详细介绍了C++中的布尔类型(bool)及其应用,并通过实例演示了如何使用比较运算符(如==、!=、<、>等)和逻辑运算符(如!、&&、||)进行条件判断。此外,还提供了输出布尔值的具体方法。

小古银的官方网站(完整教程):http://www.xiaoguyin.com/
C++入门教程视频:https://www.bilibili.com/vide...


只有两个值的基本数据类型:布尔

基本数据类型bool是一个比较有趣的类型。它只能保存两个值,truefalse。只有两个值的情况在代码中随处可见的如:是否、有没有,开关等。

bool除了可以保存truefalse,它也可以保存数字,数字0false等价,非0数字与true等价。但由于数字代表两个值并不直观,所以当使用bool时,建议使用true/false代替数字

当我们需要使用std::cout输出truefalse时,需要先输出std::boolalpha,否则只会输出数字:

#include <iostream> // std::cout std::endl std::boolalpha

int main(void)
{
    std::cout << true << std::endl;
    std::cout << false << std::endl;

    std::cout << std::boolalpha;
    std::cout << true << std::endl;
    std::cout << false << std::endl;

    return 0;
}

输出结果:

1
0
true
false

比较运算符

比较运算符在代码中也是随处可见,比较运算符:

  • 等于==
  • 不等于!=
  • 小于<
  • 大于>
  • 小于或等于<=
  • 大于或等于>=

注意

  • 等于号是===是赋值符号。
  • !=<=>=都不能写反。

基础示例

使用比较运算符比较两个值,实际上是一个计算过程。如果公式成立则计算结果是true,如果公式不成立则计算结果是false。举个栗子:

#include <iostream> // std::cout std::endl std::boolalpha

int main(void)
{
    bool a = 10 == 9; // 公式不成立,结果是false
    bool b = 10 != 9; // 公式成立,结果是true
    bool c = 10 >= 9; // 公式成立,结果是true
    bool d = 10 <= 9; // 公式不成立,结果是false

    std::cout << std::boolalpha;
    std::cout << a << std::endl;
    std::cout << b << std::endl;
    std::cout << c << std::endl;
    std::cout << d << std::endl;
    std::cout << (10 > 9) << std::endl; // 如果直接输出计算过程则需要使用括号
    std::cout << (10 < 9) << std::endl;

    return 0;
}

输出结果:

false
true
true
false
true
false

基础讲解

以下代码进行比较运算,然后用bool变量保存运算结果:

bool a = 10 == 9; // 公式不成立,结果是false
bool b = 10 != 9; // 公式成立,结果是true
bool c = 10 >= 9; // 公式成立,结果是true
bool d = 10 <= 9; // 公式不成立,结果是false

如果需要直接输出计算结果,需要注意的是,必须使用(),让程序先计算出结果,然后再输出:

std::cout << (10 > 9) << std::endl;
std::cout << (10 < 9) << std::endl;

逻辑运算符

说到判断是否成立,肯定不能少了逻辑运算符。也就是下面这些:

  • 否定!
  • 并且&&
  • 或者||

最常用的就是数学判断中的0 < x < 100,但是你不能这样写成代码。这里的意思可以理解为:x > 0并且x < 100,写成代码就是x > 0 && x < 100

再例如x < 0或者x > 100,写成代码就是x < 0 || x > 100

基础示例

#include <iostream> // std::cout std::endl std::boolalpha

int main(void)
{
    // 女王的个人信息
    unsigned int age = 12; // 年龄没有负数, 故用无符号, 12岁
    bool ismale = false; // 记录是不是男的, 不是
    bool isfemale = !ismale; // 记录是不是女的, 非男即女, !false就是true
    bool isgirl = age < 18 && isfemale; // 小于18岁并且是女性就是女孩子
    bool is_not_child = age < 2 || age >= 18; // 年龄小于2岁大于等于18岁就不是孩子, 明显这是false

    std::cout << std::boolalpha;
    std::cout << "女王的个人信息:" << std::endl;
    std::cout << "年龄:" << age << std::endl;
    std::cout << "男:" << ismale << std::endl;
    std::cout << "女:" << isfemale << std::endl;
    std::cout << "女孩子:" << isgirl << std::endl;
    std::cout << "不是孩子:" << is_not_child << std::endl;

    return 0;
}

输出结果:

女王的个人信息:
年龄:12
男:false
女:true
女孩子:true
不是孩子:false

基础讲解

虽然一般从字面上可以理解,但是理解逻辑运算符的运算也是很重要的。三个逻辑运算符的计算公式如下:

  • &&true && true的结果是truetrue && falsefalse && truefalse && false的结果都是false。即&&两边的条件都成立的时候,结果才为true,所以&&的意思就是并且。例如x > 0 && x < 100中左右两边判断都必须成立,它的结果才是true,也就是x满足条件。
  • ||true || truetrue || falsefalse || true的结果都是truefalse || false的结果是false。即||两边的条件都不成立的时候,结果才为false,所以||的意思就是或者。例如x < 0 || x > 100中左右两边判断只要有一边成立,它的结果就会是true,也就是x满足条件。
  • !!true结果是false!false结果是true。所以!表示否定,也就是

对于isfemale == true这样一条判断,一般都会简化成以下形式:

isfemale

因为如果isfemaletrue的话,true == true结果是true;如果是false的话,false == true结果是false。因此,bool变量判断true的时候可以简化成上面的形式,直接理解单词字面意义:是女的。

对于isfemale == false这样一条判断,可以简化成以下形式:

!isfemale

因为如果isfemaletrue的话,true == false结果是false,也就是!true;如果是false的话,false == false结果是true,也就是!false。因此,bool变量判断false的时候可以简化成上面的形式,直接理解单词字面意义:不是女的。

巩固练习

  1. 输入一个整数数值,然后一次过输出以下几个问题的答案:

    • 这个数值是不是0,是则输出true,不是则输出false
    • 这个数值是不是正数,是则输出true,不是则输出false
    • 这个数值是不是负数,是则输出true,不是则输出false
    • 这个数值是不是非负数,是则输出true,不是则输出false
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值