Go语言中运算符的优先级测试

2023-06-01 00:00:00 语言 优先级 运算符

运算符是用来在程序运行时执行数学或逻辑运算的

在Go语言中,一个表达式可以包含多个运算符,当表达式中存在多个运算符时,就会遇到优先级的问题

此时应该先处理哪个运算符呢?这个就由Go语言运算符的优先级来决定的。

除了位清除(bit clear)操作符,Go 也有很多和其他语言一样的位操作符,但是优先级会有一些差别


func main() {

    fmt.Printf("0x2 & 0x2 + 0x4 -> %#x\n", 0x2&0x2+0x4)    // & 优先 +
   
    //prints: 0x2 & 0x2 + 0x4 -> 0x6
    //Go:    (0x2 & 0x2) + 0x4
    //C++:    0x2 & (0x2 + 0x4) -> 0x2
   
    fmt.Printf("0x2 + 0x2 << 0x1 -> %#x\n", 0x2+0x2<<0x1)    // << 优先 +
   
    //prints: 0x2 + 0x2 << 0x1 -> 0x6
    //Go:     0x2 + (0x2 << 0x1)
    //C++:   (0x2 + 0x2) << 0x1 -> 0x8
   
    fmt.Printf("0xf | 0x2 ^ 0x2 -> %#x\n", 0xf|0x2^0x2)    // | 优先 ^
   
    //prints: 0xf | 0x2 ^ 0x2 -> 0xd
    //Go:    (0xf | 0x2) ^ 0x2
    //C++:    0xf | (0x2 ^ 0x2) -> 0xf
}

优先级列表:

    Precedence    Operator
   
        5      *  /  %  <<  >>  &  &^
       
        4      +  -  |  ^
       
        3      ==  !=  <  <=  >  >=
       
        2      &&
       
        1      ||


更多go语言的注意点,请收藏本站网址:https://www.zongscan.com/



相关文章