C#运算符优先级

作者: adm 分类: C# 发布时间: 2024-02-13

通过前面的学习我们知道运算符有不同的类型,当这些不同类型的运算符出现在同一个表达式中时,就必须遵循运算符的优先级来进行运算,才能保证运算的合理性和结果的正确性、唯一性。运算符的优先级决定了表达式中各个部分执行运算的先后顺序。

下表中详细介绍了 C# 中运算符的优先级顺序:

优先级	运算符	名称或含义	使用形式	结合方向	说明
1	[]	数组下标	数组名[整型表达式]	左到右	 
()	圆括号	(表达式)/函数名(形参表)	 
.	成员选择(对象)	对象.成员名	 
->	成员选择(指针)	对象指针->成员名	 
2	-	负号运算符	-表达式	右到左	单目运算符
(type)	强制类型转换	(数据类型)表达式	 
++	自增运算符	++变量名/变量名++	单目运算符
--	自减运算符	--变量名/变量名--	单目运算符
*	取值运算符	*指针表达式	单目运算符
&	取地址运算符	&左值表达式	单目运算符
!	逻辑非运算符	!表达式	单目运算符
~	按位取反运算符	~表达式	单目运算符
sizeof	长度运算符	sizeof表达式/sizeof(类型)	 
3	/	除	表达式/表达式	左到右	双目运算符
*	乘	表达式*表达式	双目运算符
%	余数(取模)	整型表达式%整型表达式	双目运算符
4	+	加	表达式+表达式	左到右	双目运算符
-	减	表达式-表达式	双目运算符
5	<<	左移	表达式<<表达式	左到右	双目运算符
>>	右移	表达式>>表达式	双目运算符
6	>	大于	表达式>表达式	左到右	双目运算符
>=	大于等于	表达式>=表达式	双目运算符
<	小于	表达式<表达式	双目运算符
<=	小于等于	表达式<=表达式	双目运算符
7	==	等于	表达式==表达式	左到右	双目运算符
!=	不等于	表达式!=表达式	双目运算符
8	&	按位与	整型表达式&整型表达式	左到右	双目运算符
9	^	按位异或	整型表达式^整型表达式	左到右	双目运算符
10	|	按位或	整型表达式|整型表达式	左到右	双目运算符
11	&&	逻辑与	表达式&&表达式	左到右	双目运算符
12	||	逻辑或	表达式||表达式	左到右	双目运算符
13	?:	条件运算符	表达式1?表达式2:表达式3	右到左	三目运算符
14	=	赋值运算符	变量=表达式	右到左	 
/=	除后赋值	变量/=表达式	 
*=	乘后赋值	变量*=表达式	 
%=	取模后赋值	变量%=表达式	 
+=	加后赋值	变量+=表达式	 
-=	减后赋值	变量-=表达式	 
<<=	左移后赋值	变量<<=表达式	 
>>=	右移后赋值	变量>>=表达式	 
&=	按位与后赋值	变量&=表达式	 
^=	按位异或后赋值	变量^=表达式	 
|=	按位或后赋值	变量|=表达式	 
15	,	逗号运算符	表达式,表达式,…	左到右	从左向右顺序运算

【示例】下面通过一个示例来演示一下运算符的优先级。

using System;
namespace net.yinzhong.admin
{
    class Demo
    {
        static void Main(string[] args){
            int a = 12;
            int b = 34;
            int c = 56;
            int d = 7;
            int e;
            e = (a + b) * c / d;
            Console.WriteLine("(a + b) * c / d 的值是 {0}", e);
            e = ((a + b) * c) / d;
            Console.WriteLine("((a + b) * c) / d 的值是 {0}", e);
            e = (a + b) * (c / d);
            Console.WriteLine("(a + b) * (c / d) 的值是 {0}", e);
            e = a + (b * c) / d;
            Console.WriteLine("a + (b * c) / d 的值是 {0}", e);
            Console.ReadLine();
        }
    }
}

运行结果如下:

(a + b) * c / d 的值是 368
((a + b) * c) / d 的值是 368
(a + b) * (c / d) 的值是 368
a + (b * c) / d 的值是 284

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!