C++的基本运算----算术表达式和运算符的优先级及结合规律

在 C++ 中,算术表达式的运算符优先级和结合性决定了表达式的求值顺序。以下是一些常见的算术运算符及其优先级和结合性:

1.括号 ()

优先级:最高
结合性:从内到外;
下面是一个 C++ 程序实例,展示了括号在算术表达式中的优先级如何影响结果。

#include <iostream>

int main() {
    int a = 5;
    int b = 10;
    int c;

    // 不使用括号
    c = a + b * 2; // b * 2 先计算
    std::cout << "Without parentheses: c = " << c << std::endl; // 输出 25

    // 使用括号
    c = (a + b) * 2; // (a + b) 先计算
    std::cout << "With parentheses: c = " << c << std::endl; // 输出 30

    // 另一个例子
    c = a * b + a; // 先计算 a * b
    std::cout << "c = " << c << std::endl; // 输出 60

    // 使用括号改变计算顺序
    c = a * (b + a); // 先计算 (b + a)
    std::cout << "c = " << c << std::endl; // 输出 75

    return 0;
}

程序解释
不使用括号:
c = a + b * 2; 中,b * 2 先计算,所以结果是 5 + 20 = 25。
使用括号:
c = (a + b) * 2; 中,(a + b) 先计算,所以结果是 (5 + 10) * 2 = 30。
其他例子:
c = a * b + a; 计算顺序是 a * b,结果为 50 + 5 = 55。
c = a * (b + a); 中,(b + a) 先计算,结果为 5 * (10 + 5) = 75。

2.自增和自减 ++ 和 --(前缀)

优先级:高
结合性:从右到左
以下是一个 C++ 程序实例,展示了前缀自增 (++) 和前缀自减 (–) 运算符的用法及其影响。

#include <iostream>

int main() {
    int a = 5;
    int b = 10;
    int result;

    // 前缀自增
    result = ++a; // 先自增,然后赋值
    std::cout << "After prefix increment: a = " << a << ", result = " << result << std::endl; // 输出 a = 6, result = 6

    // 前缀自减
    result = --b; // 先自减,然后赋值
    std::cout << "After prefix decrement: b = " << b << ", result = " << result << std::endl; // 输出 b = 9, result = 9

    // 结合其他操作
    result = ++a + --b; // 先进行自增和自减,然后相加
    std::cout << "After combining: a = " << a << ", b = " << b << ", result = " << result << std::endl; // 输出 a = 7, b = 8, result = 15

    return 0;
}

程序解释
前缀自增:
result = ++a; 中,a 先自增(变为 6),然后将新值赋给 result。输出 a = 6, result = 6。
前缀自减:
result = --b; 中,b 先自减(变为 9),然后将新值赋给 result。输出 b = 9, result = 9。
结合其他操作:
result = ++a + --b; 中,a 先自增(变为 7),b 先自减(变为 8),最后相加得 result = 15。输出 a = 7, b = 8, result = 15。

3.乘法 *、除法 / 和 取余 %

优先级:中
结合性:从左到右
以下是一个 C++ 程序实例,展示了乘法 (*)、除法 (/) 和取余 (%) 运算符的用法及其效果。

#include <iostream>

int main() {
    int a = 20;
    int b = 6;
    int result;

    // 乘法
    result = a * b;
    std::cout << "Multiplication: " << a << " * " << b << " = " << result << std::endl; // 输出 120

    // 除法
    result = a / b;
    std::cout << "Division: " << a << " / " << b << " = " << result << std::endl; // 输出 3

    // 取余
    result = a % b;
    std::cout << "Modulus: " << a << " % " << b << " = " << result << std::endl; // 输出 2

    // 结合运算示例
    result = (a + b) * (a - b);
    std::cout << "Combined operation: (a + b) * (a - b) = " << result << std::endl; // 输出 120

    return 0;
}

程序解释
乘法:
result = a * b; 中,计算 20 * 6,结果为 120。
除法:
result = a / b; 中,计算 20 / 6,由于整数除法,结果为 3(小数部分被丢弃)。
取余:
result = a % b; 中,计算 20 % 6,结果为 2,即 20 除以 6 的余数。
结合运算示例:
result = (a + b) * (a - b); 中,先计算 a + b = 26 和 a - b = 14,然后相乘,结果为 364。

4.加法 + 和 减法 -

优先级:低
结合性:从左到右
以下是一个 C++ 程序实例,展示了加法 (+) 和减法 (-) 运算符的用法及其效果。

#include <iostream>

int main() {
    int a = 15;
    int b = 5;
    int result;

    // 加法
    result = a + b;
    std::cout << "Addition: " << a << " + " << b << " = " << result << std::endl; // 输出 20

    // 减法
    result = a - b;
    std::cout << "Subtraction: " << a << " - " << b << " = " << result << std::endl; // 输出 10

    // 结合运算示例
    result = (a + b) - (b + 5);
    std::cout << "Combined operation: (a + b) - (b + 5) = " << result << std::endl; // 输出 10

    // 负数示例
    int c = -a; // a 的负值
    std::cout << "Negative value: c = " << c << std::endl; // 输出 -15

    return 0;
}

程序解释
加法:
result = a + b; 中,计算 15 + 5,结果为 20。
减法:
result = a - b; 中,计算 15 - 5,结果为 10。
结合运算示例:
result = (a + b) - (b + 5); 中,先计算 a + b = 20 和 b + 5 = 10,然后相减,结果为 10。
负数示例:
int c = -a; 中,将 a 的负值赋给 c,结果为 -15。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月下对影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值