---
source_url: https://docs.dolphindb.cn/zh/progr/operators/precedence.html
fetched_at: 2026-05-19T09:01:00Z
category: progr
title: 运算优先级
sha1: 475556e4dea6d163e9a38e70181e323c5abbc3ed
---

# 运算优先级

DolphinDB
的运算符优先级顺序符合常识。经常使用的运算符的优先级与大多数编程语言相似。表达式中优先级最高的运算符首先被执行，具有相同优先级的运算符则按从左到右的顺序执行。

```dolphindb
a=5;
3+a*a;
// output
28
// 相当于 3+(a*a)
```

```dolphindb
3*a..10;
// output
[15,18,21,24,27,30]
// 相当于 3*(a..10)
```

在一元运算符的右侧使用二元运算符可能会产生歧义。例如，abs x-10 可以解释为 abs(x-10) 或
abs(x)-10。我们使用第一个解释，即一元运算符将整个表达式视为一个运算数。这里我们建议使用括号以避免歧义。

另外举个例子，avg sin abs -100..100 等同于 avg(sin(abs(-100..100)))。

```dolphindb
avg sin abs -100..100;
// output
-0.001265
```

```dolphindb
avg(sin(abs(-100..100)));
// output
-0.001265
```

```dolphindb
sum 1 2 3 == 6;
// output
0
// 相当于 sum(1 2 3 == 6)
```

```dolphindb
x = 10
sin(x) + cos(x);
// output
-1.383093
```

```dolphindb
sin x + cos x;
// output
0.260799
// 相当于 sin(x+cos x)
```

```dolphindb
x = 1 NULL 1;
y = NULL 1 1;
(isNull x) || (isNull y);
// output
[1,1,0]
```

```dolphindb
isNull x || isNull y;
// output
[0,1,0]
// 相当于 isNull (x || (isNull y))
```

初级一元运算符 neg(-) 和 not(!)
是上述一元运算符规则的两个例外。当与其他二元运算符混合时，它们按照运算符表中设置的优先级顺序执行。

例如，-n..n 等同于 (-n)..n 因为运算符 neg 的优先级高于 seq。

```dolphindb
n=5;
-n..n;
// output
[-5,-4,-3,-2,-1,0,1,2,3,4,5]
```

```dolphindb
(-n)..n;
// output
[-5,-4,-3,-2,-1,0,1,2,3,4,5]
```

```dolphindb
-(n..n);
// output
[-5]
```

```dolphindb
x=1 2 3;
!x-1;
// output
[-1,-1,-1]
```

用户定义函数用作运算符时，它的优先级与乘法和除法的优先级一样。

```dolphindb
def f1(x,y):x+y
2 add 3 sub 5 f1 5;
// output
-5
```
