当前位置: 首页 > article >正文

第五讲:运算符与表达式:算术、关系、逻辑、赋值等运算符及其优先级

在C++编程中,运算符和表达式是构建程序逻辑的基础。它们允许我们对数据进行各种操作,从而得出新的数据值或执行特定的逻辑判断。C++中的运算符种类繁多,根据功能的不同,可以大致分为算术运算符、关系运算符、逻辑运算符和赋值运算符等几大类。此外,每种运算符都有其特定的优先级和结合性,这些规则决定了在复杂的表达式中,各个运算符的执行顺序。

一、算术运算符

算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法和取余等。

  • 加法运算符(+):用于两个数值的相加。
  • 减法运算符(-):用于两个数值的相减。
  • 乘法运算符(*):用于两个数值的相乘。
  • 除法运算符(/):用于两个数值的相除,结果为商。
  • 取余运算符(%):用于两个数值的相除,结果为余数。
  • 自增运算符(++):使变量的值增加1。
  • 自减运算符(--):使变量的值减少1。
二、关系运算符

关系运算符用于比较两个数值的大小或相等性,返回布尔值(true或false)。

  • 等于运算符(==):判断两个数值是否相等。
  • 不等于运算符(!=):判断两个数值是否不相等。
  • 大于运算符(>):判断左侧数值是否大于右侧数值。
  • 小于运算符(<):判断左侧数值是否小于右侧数值。
  • 大于等于运算符(>=):判断左侧数值是否大于等于右侧数值。
  • 小于等于运算符(<=):判断左侧数值是否小于等于右侧数值。
三、逻辑运算符

逻辑运算符用于执行逻辑运算,包括逻辑与、逻辑或和逻辑非等。

  • 逻辑与运算符(&&):当且仅当两个操作数都为true时,结果为true。
  • 逻辑或运算符(||):当且仅当两个操作数都为false时,结果为false。
  • 逻辑非运算符(!):将操作数的布尔值取反。
四、赋值运算符

赋值运算符用于将右侧的值赋给左侧的变量。

  • 简单赋值运算符(=):将右侧的值赋给左侧的变量。
  • 复合赋值运算符:如+=、-=、*=、/=、%=等,它们将右侧的值与左侧变量的当前值进行相应的算术运算后,再将结果赋给左侧变量。
五、运算符优先级和结合性

在C++中,当表达式中包含多个运算符时,运算符的优先级和结合性决定了运算的顺序。

  • 优先级:决定了在表达式中哪个运算符先被计算。例如,乘法运算符的优先级高于加法运算符,因此在一个表达式中,乘法会先于加法被计算。
  • 结合性:当两个运算符具有相同的优先级时,结合性决定了它们是从左到右还是从右到左进行计算。在C++中,大多数运算符都是左结合的,即从左到右进行计算。

了解运算符的优先级和结合性对于编写正确的C++代码至关重要,因为它们直接影响到表达式的计算结果。在实际编程中,为了代码的清晰和可读性,建议使用括号来明确指定运算的顺序,即使括号的使用可能会改变运算符的默认优先级和结合性。

综上所述,运算符和表达式是C++编程中的核心概念,它们允许我们执行各种数学和逻辑运算,从而构建出功能强大的程序。通过深入理解这些运算符的功能、优先级和结合性,我们可以更加高效地编写和调试C++代码。

示例:运算符与表达式在C++中的应用

以下是一个简单的C++程序示例,它展示了算术运算符、关系运算符、逻辑运算符和赋值运算符的使用,以及运算符的优先级和结合性。

#include <iostream>

int main() {
    // 算术运算符示例
    int a = 10;
    int b = 5;
    int sum = a + b;         // 加法
    int difference = a - b;  // 减法
    int product = a * b;     // 乘法
    int quotient = a / b;    // 除法
    int remainder = a % b;   // 取余

    std::cout << "Sum: " << sum << std::endl;
    std::cout << "Difference: " << difference << std::endl;
    std::cout << "Product: " << product << std::endl;
    std::cout << "Quotient: " << quotient << std::endl;
    std::cout << "Remainder: " << remainder << std::endl;

    // 关系运算符示例
    bool isEqual = (a == b);
    bool isNotEqual = (a != b);
    bool isGreaterThan = (a > b);
    bool isLessThan = (a < b);
    bool isGreaterThanOrEqual = (a >= b);
    bool isLessThanOrEqual = (a <= b);

    std::cout << "Is a equal to b? " << (isEqual ? "Yes" : "No") << std::endl;
    std::cout << "Is a not equal to b? " << (isNotEqual ? "Yes" : "No") << std::endl;
    std::cout << "Is a greater than b? " << (isGreaterThan ? "Yes" : "No") << std::endl;
    std::cout << "Is a less than b? " << (isLessThan ? "Yes" : "No") << std::endl;
    std::cout << "Is a greater than or equal to b? " << (isGreaterThanOrEqual ? "Yes" : "No") << std::endl;
    std::cout << "Is a less than or equal to b? " << (isLessThanOrEqual ? "Yes" : "No") << std::endl;

    // 逻辑运算符示例
    bool condition1 = true;
    bool condition2 = false;
    bool andResult = condition1 && condition2;
    bool orResult = condition1 || condition2;
    bool notResult = !condition1;

    std::cout << "AND result: " << (andResult ? "True" : "False") << std::endl;
    std::cout << "OR result: " << (orResult ? "True" : "False") << std::endl;
    std::cout << "NOT result: " << (notResult ? "True" : "False") << std::endl;

    // 赋值运算符示例及运算符优先级示例
    int x = 10;
    int y = 20;
    int z;

    // 复合赋值运算符
    x += 5;  // 等同于 x = x + 5;
    y -= 3;  // 等同于 y = y - 3;

    // 运算符优先级示例
    z = x * 2 + y / 2;  // 由于乘法优先级高于加法和除法,因此先计算 x*2 和 y/2,然后相加

    std::cout << "x after +=: " << x << std::endl;
    std::cout << "y after -=: " << y << std::endl;
    std::cout << "z (priority example): " << z << std::endl;

    // 使用括号改变优先级
    int resultWithParentheses = (x + 5) * (y - 3);  // 使用括号确保先计算括号内的表达式

    std::cout << "Result with parentheses: " << resultWithParentheses << std::endl;

    return 0;
}

在这个示例中,我们首先使用算术运算符对整数变量进行各种运算,并打印结果。然后,我们使用关系运算符比较整数变量,并打印比较结果。接着,我们展示了逻辑运算符的使用,包括逻辑与、逻辑或和逻辑非。最后,我们演示了赋值运算符,包括简单赋值和复合赋值,以及运算符的优先级和结合性。通过使用括号,我们改变了运算符的默认计算顺序,以展示优先级规则如何被覆盖。

运行这个程序将输出各个运算的结果,帮助理解运算符和表达式在C++中的应用。

结尾

通过上述示例,我们深入探讨了C++中运算符与表达式的应用,包括算术运算符、关系运算符、逻辑运算符以及赋值运算符的使用。这些运算符构成了C++编程语言的核心部分,它们使得我们能够进行数值计算、条件判断以及逻辑推理,从而构建出功能丰富的程序。

我们了解到,运算符的优先级和结合性在表达式计算中起着至关重要的作用。它们决定了在复杂的表达式中,各个运算符的执行顺序。了解这些规则有助于我们编写正确的代码,避免潜在的错误。

此外,我们还看到了如何使用括号来改变运算符的默认优先级,以确保表达式按照我们期望的顺序进行计算。这是编写清晰、可读代码的重要技巧之一。

总之,运算符与表达式是C++编程中的基础且强大的工具。通过熟练掌握它们,我们能够编写出更加高效、可靠的程序。希望这个示例和讨论对您有所帮助,祝您在C++编程的道路上取得更大的进步!


http://www.kler.cn/a/416770.html

相关文章:

  • centos系统设置本地yum源教程
  • 安卓mokey测试学习思路
  • Axios与FastAPI结合:构建并请求用户增删改查接口
  • 在oracle下载jdk显示400 Bad Request Request Header Or Cookie Too Large
  • 宠物领养平台构建:SpringBoot技术路线图
  • 基于米尔全志T527开发板的FacenetPytorch人脸识别方案
  • 超级灵感:前端页面功能统一管理方案
  • Flutter 权限申请
  • 数据结构——有序二叉树的构建遍历查找
  • 【iOS】多线程基础
  • 基于R语言森林生态系统结构、功能与稳定性分析与可视化
  • 搭建一个基于Web的文档管理系统,用于存储、共享和协作编辑文档
  • 面试小札:ThreadLocal底层实现原理和具体应用场景
  • 浅谈JAVA中的Random随机数
  • Linux CentOS:深入探讨端口管理与防火墙配置技巧20241126
  • 蓝队之云技术
  • UE5 打包环境、C++环境安装说明
  • [2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(6))
  • 基础(函数、枚举)错题汇总
  • 深度学习笔记——模型部署
  • docker 在ubuntu系统安装,以及常用命令,配置阿里云镜像仓库,搭建本地仓库等
  • idea_工程与模块管理
  • OSI7层模型和网络排错、网络安全
  • linux下USB设备状态查询
  • 【无标题】JAVA策略模式代码例子
  • Spark和MapReduce场景应用和区别