左移运算符(<<)的优先级是 高。在C、C++、Java等编程语言中,左移运算符用于将一个整数的二进制位向左移动指定的位数。左移运算符的优先级高于算术运算符、关系运算符和位运算符,但低于括号运算符和一元运算符。
具体来说,左移运算符的优先级在所有算术运算符之前,但低于逻辑运算符和条件运算符。在移位运算符中,左移(<<)和右移(>>)是同级的,结合性是自左向右。
左移1位
```c
int i = 1;
i = i << 1; // i 变为 2
```
左移2位
```c
int i = 1;
i = i << 2; // i 变为 4
```
左移3位
```c
int i = 1;
i = i << 3; // i 变为 8
```
左移超过整数位数
```c
int i = 1;
i = i << 33; // i 变为 0,因为int类型是32位,左移33位相当于左移1位,然后丢弃最高位
```
需要注意的是,当左移的位数超过整数类型的最大位数时,编译器通常会用左移的位数去模类型的最大位数,然后按余数进行移位。
总结:
左移运算符(<<)的优先级是高的。
左移运算符的优先级高于算术运算符、关系运算符和位运算符,但低于括号运算符和一元运算符。
左移运算符是同级别的,结合性是自左向右。