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

C# 运算符优先级和关联性

C# 运算符优先级和关联性

在本教程中,我们将学习 C# 中的运算符优先级和关联性。这将使我们了解 C# 编译器如何评估表达式。

C# 运算符优先级

运算符优先级是一组规则,用于定义表达式的计算方式。在 C# 中,每个 C# 运算符都有一个分配的优先级,并根据这些优先级计算表达式。

例如 ,乘法的优先级(*) 运算符的优先级高于加法(+) 操作员。因此,涉及乘法的运算是在加法之前进行的。

看看下面的说法。

int x = 4 + 3 * 5;

x 的值是多少 执行完这条语句后?

操作数 3+ 相关联 和 * .如前所述,乘法的优先级高于加法。所以,操作 3 * 5 代替 4 + 3 执行 .变量 x 的值 将是 19 .

如果加法优先级更高,4 + 3 将首先评估 x 的值 将是 35 .


运算符优先级表

运算符的优先级越高,在表格中出现的位置越高

C# 运算符优先级
类别 运算符
后缀递增和递减 ++, --
前缀递增、递减和一元 ++, --, +, -, !, ~
乘法 *, /, %
添加剂 +, -
换档 <<,>>
关系 <, <=,>,>=
平等 ==, !=
按位与 &
按位异或 ^
按位或 |
逻辑与 &&
逻辑或 ||
三元 ? :
作业 =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=,>>=

赋值运算符的优先级最低,而后缀递增和递减运算符的优先级最高。


示例 1:运算符优先级

using System;

namespace Operator
{
	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

让我们了解一下表达式在程序中是如何计算的。

-- 的优先级 和 ++ 高于 * , 和 * 的优先级 高于 - .因此声明,

result1 = --a * b - ++c;

相当于

result1 = ((--a)*b)-(++c);

无论括号外的运算符的优先级如何,括号内的表达式总是首先被计算。

在下一个表达式中,+ 的优先级 高于 >= .所以,ca 先相加,然后和 b 比较 产生 false .


C#中运算符的结合性

在上一节中,我们讨论了运算符优先级。如果使用两个优先级不同的运算符,则先计算优先级较高的运算符。

但是如果两个运算符的优先级相同呢?

在这种情况下,表达式的计算基于运算符的关联性(从左到右或从右到左)。

例如:

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

在这里,两个 */ 具有相同的优先级。但是由于这些运算符的关联性是从从左到右 , a * b 先求值,再进行除法。此表达式的最终结果将是 10 .

在这个特定的示例中,关联性并不重要。因为即使在乘法之前进行除法,结果也不受影响。

我们再看一个例子。

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

= 的关联性 运算符是从从右到左 .所以 c 的值 (即 3 ) 分配给 b ,然后是 b 的值 分配给 a .所以执行这条语句后,a的值 , bc 将是 3 .

下表显示了 C# 运算符的关联性:

C# 运算符的关联性
类别 运算符 关联性
后缀递增和递减 ++, -- 从左到右
前缀递增、递减和一元 ++, --, +, -, !, ~ 从右到左
乘法 *, /, % 从左到右
添加剂 +, - 从左到右
换档 <<,>> 从左到右
关系 <, <=,>,>= 从左到右
平等 ==, != 从左到右
按位与 & 从左到右
按位异或 ^ 从左到右
按位或 | 从左到右
逻辑与 && 从左到右
逻辑或 || 从左到右
三元 ? : 从右到左
作业 =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=,>>= 从右到左

几乎所有运算符都具有从左到右的关联性。从右到左具有结合性的运算符分别是:


示例 2:运算符的关联性

using System;
 
namespace Operator
{
	class OperatorPrecedence
	{
		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 = {0}, b = {1}, c = {2}", a, b, c);
		}
	}
}

当我们运行程序时,输出将是:

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

C语言

  1. C# 关键字和标识符
  2. C# 运算符
  3. C# 三元 (? :) 运算符
  4. C# 类和对象
  5. C#抽象类和方法
  6. C# 部分类和部分方法
  7. C# 密封类和方法
  8. C++ 中的运算符示例:什么是、类型和程序
  9. C - 常量和文字
  10. C - 输入和输出
  11. C++ 日期和时间
  12. C++ 重载(运算符和函数)