📜  什么是运算符的关联属性 - C++ (1)

📅  最后修改于: 2023-12-03 14:49:14.392000             🧑  作者: Mango

运算符的关联属性 - C++

简介

在C++中,运算符是用于执行特定操作的符号。运算符可以分为多个类别,每个类别具有特定的关联属性。了解这些关联属性可以帮助程序员正确地使用运算符,并避免产生意外的结果。

运算符的关联属性
1. 优先级

运算符的优先级决定了它们的计算顺序。优先级高的运算符会先执行,而优先级相同的运算符会根据其关联性(从左到右或从右到左)进行计算。

以下是一些常见的运算符按优先级从高到低的顺序:

  1. ():括号运算符(最高优先级)
  2. ++--:自增、自减运算符
  3. */%:乘法、除法、取余运算符
  4. +-:加法、减法运算符
  5. <<=>>=:关系运算符
  6. ==!=:相等性运算符
  7. &&:逻辑与运算符
  8. ||:逻辑或运算符
  9. =:赋值运算符(最低优先级)
2. 结合性

运算符的结合性决定了相同优先级的运算符在没有括号的情况下如何组合。结合性可以是从左到右(左结合)或从右到左(右结合)。

以下是一些常见的运算符及其结合性:

  • 左结合的运算符:=+-*/%
  • 右结合的运算符:=(赋值运算符)
3. 操作数个数

运算符可以根据其操作数的个数进行分类。在C++中,运算符可以是一元、二元或三元的。

  • 一元运算符只接受一个操作数,例如:++--
  • 二元运算符接受两个操作数,例如:+-*
  • 三元运算符接受三个操作数,例如:?:
示例代码
#include <iostream>

int main() {
    int x = 5;
    int y = 10;
    int z = 15;

    // 示例1:优先级
    int result1 = x + y * z;  // 结果为 155
    int result2 = (x + y) * z;  // 结果为 225

    std::cout << "Result 1: " << result1 << std::endl;
    std::cout << "Result 2: " << result2 << std::endl;

    // 示例2:结合性
    int result3 = x = y = z;
    int result4 = x + (y + z);

    std::cout << "Result 3: " << result3 << std::endl;  // 结果为 15
    std::cout << "Result 4: " << result4 << std::endl;  // 结果为 30

    // 示例3:操作数个数
    int result5 = -x;  // 一元运算符
    int result6 = x + y;  // 二元运算符
    int result7 = (x > y) ? x : y;  // 三元运算符

    std::cout << "Result 5: " << result5 << std::endl;
    std::cout << "Result 6: " << result6 << std::endl;
    std::cout << "Result 7: " << result7 << std::endl;

    return 0;
}

以上示例展示了运算符的关联属性在表达式中的应用。根据运算符的优先级和结合性,可以得到期望的计算结果。了解运算符的操作数个数也有助于正确使用运算符。

希望以上介绍对程序员对于运算符的关联属性有一定的帮助。