Пробовал этот код на Go детской площадке :
package main
import (
"fmt"
)
func main() {
log2Dim := uint32(9)
SIZE := 1 << 3 * log2Dim
fmt.Printf("Result: %v\n", SIZE)
SIZE = 1 << (3 * log2Dim) // => only difference: adding ( )
fmt.Printf("Result: %v\n", SIZE)
}
Это распечатано:
Result: 72
Result: 134217728
Почему это имеет огромное значение, просто добавляя ( )
к оператору, содержащему операции <<
и *
?
Согласно this , *
имеет более высокий приоритет, чем <<
, который является первым результатом поиска Google приоритет битового сдвига golang.