📜  Scala中的运算符优先级

📅  最后修改于: 2022-05-13 01:54:51.909000             🧑  作者: Mango

Scala中的运算符优先级

运算符是一个符号,表示要使用一个或多个操作数执行的操作。运算符是任何编程语言的基础。在具有多个具有不同优先级的运算符的表达式中首先执行哪个运算符由运算符优先级确定。

例如,10 + 20 * 30 计算为 10 + (20 * 30) 而不是 (10 + 20) * 30。
当两个具有相同优先级的运算符出现在表达式中时,使用关联性。关联性可以是从右到左或从左到右。例如 '*' 和 '/' 具有相同的优先级,并且它们的关联性是从左到右,因此表达式“100 / 10 * 10”被视为“(100 / 10) * 10”。

在下表中,优先级最高的运算符出现在表的顶部,而优先级最低的运算符出现在底部。

Operator

Category

Associativity

()[]Postfix

Left to Right

! ~UnaryRight to Left
* / %MultiplicativeLeft to Right
+ –AdditiveLeft to Right
>> >>> <<ShiftLeft to Right
< <= > >=RelationalLeft to Right
== !=Relational is equal to/is not equal toLeft to Right
== !=EqualityLeft to Right
&Bitwise ANDLeft to Right
^Bitwise exclusive ORLeft to Right
|Bitwise inclusive ORLeft to Right
&&Logical ANDLeft to Right
| |Logical ORLeft to Right
= += -= *= /= %= >>= <<= &= ^= |=AssignmentRight to left

,

Comma (separate expressions)Left to Right

下面是运算符优先级的示例。

例子 :

// Scala program to show Operators Precedence
  
// Creating object
object gfg
{
    // Main method
    def main(args: Array[String])
    {
      
        var a:Int = 20;
        var b:Int = 10;
        var c:Int = 15;
        var d:Int = 5;
        var e = 0
          
        // operators with the highest precedence
        // will operate first
        e = a + b * c / d; 
              
        /* step 1: 20 + (10 * 15) /5
            step 2: 20 + (150 /5)
        step 3:(20 + 30)*/
              
        println("Value of a + b * c / d is : " + e )
      
    }
}

输出:

Value of a + b * c / d is : 50

在上面的例子中 e = a + b * c / d;在这里,e 被赋值为 50,而不是 120,因为运算符* 的优先级高于 / 高于 +,所以它首先乘以 10 * 15,然后除以 5,然后再加上 20。