亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

掌握 C# 运算符优先级与结合性:实战指南

掌握 C# 运算符优先级与结合性

本深度教程解释 C# 编译器如何通过运算符优先级和结合性规则来求值表达式。通过清晰的示例和参考表快速掌握核心概念。

C# 中的运算符优先级

运算符优先级决定了表达式中各部分的求值顺序。每个 C# 运算符都有固定的优先级,确保编译器以一致的方式处理表达式。

例如,乘法运算符 * 的优先级高于加法运算符 +。因此,在表达式

int x = 4 + 3 * 5;
中,乘法会先执行,得到 x = 19。

如果加法优先于乘法,结果将是 35 —— 但 C# 遵循既定的优先级层级。


运算符优先级表

下表按优先级从高到低列出了运算符。

C# 运算符优先级
类别运算符
后缀自增/自减++, --
前缀自增/自减和一元运算符++, --, +, -, !, ~
乘法性*, /, %
加法性+, -
移位<<, >>
关系<, <=, >, >=
相等性==, !=
按位与&
按位异或^
按位或|
逻辑与&&
逻辑或||
三元条件? :
赋值=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

赋值运算符优先级最低,而后缀自增/自减位于顶层。


示例 1:运算符优先级

using System;
namespace OperatorDemo {
    class OperatorPrecedence {
        public static void Main(string[] args) {
            int result1;
            int a = 5, b = 6, c = 4;
            result1 = --a * b - ++c;
            Console.WriteLine(result1);
            bool result2;
            result2 = b >= c + a;
            Console.WriteLine(result2);
        }
    }
}

运行该程序输出:

19 False

求值步骤:

第二个表达式表明加法 + 优先于比较 >=,因此先计算 c + a 再进行比较。


C# 中的运算符结合性

当两个运算符具有相同优先级时,编译器使用结合性决定求值顺序。大多数 C# 运算符是左结合(从左向右),但也有少数是右结合(从右向左)。

示例:

int a = 5, b = 6, c = 3; int result = a * b / c;

因为 * 和 / 都是左结合,所以先执行乘法,得到 10。

右结合在赋值链中至关重要:

int a = 5, b = 6, c = 3; a = b = c;

值 3 先赋给 b,再将 b 赋给 a,最终三个变量都持有 3。

下表总结了 C# 运算符的结合性。

C# 运算符结合性
类别运算符结合性
后缀自增/自减++, --左到右
前缀自增/自减和一元运算符++, --, +, -, !, ~右到左
乘法性*, /, %左到右
加法性+, -左到右
移位<<, >>左到右
关系<, <=, >, >=左到右
相等性==, !=左到右
按位与&左到右
按位异或^左到右
按位或|左到右
逻辑与&&左到右
逻辑或||左到右
三元条件? :右到左
赋值=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=右到左

关键的右结合运算符包括一元前缀运算符、三元条件运算符以及所有赋值运算符。


示例 2:结合性实战

using System;
namespace OperatorDemo {
    class OperatorAssociativity {
        public static void Main(string[] args) {
            int a = 5, b = 6, c = 3;
            int result = a * b / c;
            Console.WriteLine(result);
            a = b = c;
            Console.WriteLine($"a = {a}, b = {b}, c = {c}");
        }
    }
}

输出结果:

10 a = 3, b = 3, c = 3

C语言

  1. C#关键字与标识符:规则、完整列表与最佳实践
  2. C#运算符——C#运算符全面指南
  3. C# 三元运算符:条件表达式简明指南
  4. C# 类与对象:面向对象编程的基石
  5. 掌握 C# 抽象类与抽象方法:实战指南
  6. 理解 C# 分部类与分部方法
  7. 掌握 C# sealed 类与方法:用法、示例与代码安全性能提升
  8. C++ 运算符全解析:类型、示例与示例程序
  9. C 语言常量与字面量完全指南:类型、用法与最佳实践
  10. C 语言输入输出完全掌握:标准 I/O 与格式化控制
  11. C++日期时间完全指南:ctime库、tm结构体与格式化输出
  12. C++重载机制深度解析:函数重载与运算符重载全攻略