小白学C++ L8关系与逻辑表达式

关系表达式

  • 在C++中,关系运算符用于判断表达式之间的大小关系,对两边的值进行6种情况的判断:

    • 大于>和大于等于>=运算符
    • 小于<和小于等于<=运算符
    • 相等==和不相等!=运算符
  • 关系运算符中,表达式结果的类型可以是字符或者数字,但不可以是字符串

  • 关系表达式返回一个布尔值:成立为1(true)代表真,不成立为0(false)代表假

  • 浮点数一般不会用 == 或者 != 来判断,因为可能产生表示误差

    • 比较两个浮点数是否相等,需要看两个数的差值是否小于一定的精度,比如:对于浮点数a和b,如果(a - b) < 1e-6 如果值为真,就判断两个浮点数相等。

逻辑表达式

关系表达式可以判断某个条件是否成立,逻辑表达式中包含了多个关系表达式,可以对多个条件进行判断

  • C++使用逻辑运算符连接多个关系表达式,从而构建逻辑表达式。
  • 常用的逻辑运算符有以下三种:
    • 逻辑AND运算符&&:判断两个关系表达式是否同时成立
    • 逻辑OR运算符||:判断两个关系表达式是否至少有一个成立
    • 逻辑NOT运算符!:判断某个关系表达式是否不成立

假设p1和p2是关系表达式的返回结果,逻辑运算符的运算规则可以参考下表:在这里插入图片描述

运算符优先级

至此,我们已经学习的运算符如下:

  • 算术运算符(+ - * / % ++ --等)
  • 赋值运算符(=等)
  • 位运算符(<< >>等)
  • 关系运算符(> >= < <= == !=等)
  • 逻辑运算符(&& || !等)

运算符优先顺序:赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符
对于这些常用的运算符,按照计算优先级从高到低(左边更高,右边更低)进行排列,可以得到如下表格:
在这里插入图片描述
Tips:对于一个表达式,虽然可以通过计算优先级省略掉括号,但为了代码的可读性,我们在编写时一般都选择把括号加上

练习1:输入年份,判断是否为闰年

#include <cstdio>
#include <iostream>
using namespace std;
int main() {
    int year;
    cin >> year;
    bool is_leap_year;
    
    // TODO 请用一个表达式来判断 year 是否为闰年
    // 是400的倍数;或者是4的倍数并且不是100的倍数
    is_leap_year = (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0));
    
    // 也可以这么写:
    // is_leap_year = !(year % 400) || (!(year % 4) && (year % 100));
    
    cout << is_leap_year << endl;
    return 0;
}

练习2:下列运算输出结果为:

int a, b, c;
a = b = c =1;
cout << a-- || --b && ++c;

输出:1

表达式cout << a-- || --b && ++c;中,a--先计算逻辑表达式,再改变变量a的数值;--b++c先改变变量b与c的数值,再计算逻辑表达式:

  • 根据运算优先级,先执行&&运算:--b && ++c即为0 && 2,得到0;
  • 再进行|| 运算:a-- || 0即为1 || 0,得到1,故输出表达式值为1。
  • (变量a逻辑运算结束后,值改变为0。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值