Cava 运算符

简介

在编程中我们需要对一些变量进行运算,比如算术运算、逻辑运算等。cava提供了一系列运算符来支持上述功能,根据运算场景的不同主要分成下面几类:

  • 算术运算符

  • 关系运算符

  • 位运算符

  • 逻辑运算符

  • 赋值运算符

算术运算符

算术运算符主要用于数学计算,它们的含义和数学中的含义相同,下表列出了cava支持的所有运算符。

算术运算符

描述

示例(int left = 20,right = 10;)

+

加法:操作符两边的操作数相加

int a = left + right; a结果为30

-

减法:左边的操作数减去右边的操作数

int a = left - right; a结果为10

*

乘法:操作符两边的操作数相乘

int a = left * right; a结果为200

/

除法:左边的操作数除以右边的操作数

int a = left / right; a结果为2

%

取模:左边的操作数除以右边的操作数的余数

int a = left % right; a结果为0

++

自增:操作数自身加一

int a = left++; a结果为20, left为21

自减:操作数自身减一

int a = left—; a结果为20,left为19

说明:除法运算符的右边变量不能为零,否则会触发除零异常。int b = a++; 表示先将a赋值给b,然后a再自增。int b = ++a;表示a先自增,然后再讲自增之后的a赋值给b。

关系运算符

cava中关系运算的结果为布尔(boolean)类型,主要用在if语句中。下表列出了cava支持的关系运算符:

关系运算符

描述

示例(int left = 20,right = 10;)

>

大于:检查左边的操作数是否大于右边的操作数,如果是结果为true,否则为false

boolean a = left > right; a的结果为true

<

小于:检查左边的操作数是否小于右边的操作数,如果是结果为true,否则为false

boolean a = left < right; a的结果为false

>=

大于等于:检查左边的操作数是否大于或者等于右边的操作数,如果是结果为true,否则为false

boolean a = left >= right; a的结果为true

<=

小于等于:检查左边的操作数是否小于或者等于右边的操作数,如果是结果为true,否则为false

boolean a = left <= right; a的结果为false

==

等于:检查左边的操作数是否等于右边的操作数,如果是结果为true,否则为false

boolean a = left == right; a的结果为false

!=

不等于:检查左边的操作数是否不等于右边的操作数,如果是结果为true,否则为false

boolean a = left != right; a的结果为true

位运算符

数值在计算机中是通过二进制进行表示的,cava提供了一系列位运算符,支持对int、long、short、char、byte等类型变量在按位进行运算。下表列出了cava支持的位运算符:

位运算符

描述

示例(int left = 1,right = 2;)

&

按位与:两个操作数的某一位都为1时这位才为1

int a = left & right; a的结果为0

|

按位或:两个操作数的某一位只要有一个不为1时这位就为1

int a = left | right; a的结果为3

^

按位异或:两个操作数的某一位不同时这位才为1

int a = left ^ right; a的结果为3

~

按位取反:对操作数的每一位取反

int a = ~left; a的结果为-2

<<

左移:操作数左移指定的位数

int a = left << 2; a的结果为4

>>

右移:操作室右移指定的位数

int a = right >> 1; a的结果为1

逻辑运算符

cava中的逻辑运算符用于连接布尔型的变量组成更复杂的语句,下表列出了cava中支持的逻辑运算符:

逻辑运算符

描述

实例(boolean left = true, right = false;)

&&

逻辑与:两边的操作数都为true时结果才为true

boolean a = left && right; a的结果为false

||

逻辑或:两边的操作数任何一个为true时,结果就为true

boolean a = left || right; a的结果为true

!

逻辑非:取反操作数的逻辑状态,true结果为false,false结果为true

boolean a = !left; a的结果为false

赋值运算符

赋值运算符用于将一个变量赋值给另一个变量,下表列出了cava中支持的赋值运算符:

赋值运算符

描述

示例(int left = 1, right = 2;)

=

简单赋值:将右边操作数的值赋给左边操作数

left = right; left结果为2

+=

加和赋值:将左边操作数和右操作数相加后赋给左边操作数

left += right; left结果为3

-=

减和赋值:将左边操作数和右操作数相减后赋给左边操作数

left -= right; left结果为-1

*=

乘和赋值:将左边操作数和右操作数相乘后赋给左边操作数

left *= right; left结果为2

/=

除和赋值:将左边操作数和右操作数相除后赋给左边操作数

left /= right; left结果为0

%=

取模和赋值:将左边操作数和右操作数取模后赋给左边操作数

left %= right; left结果为1

&=

按位与赋值:将左边操作数和右操作数按位与后赋给左边操作数

left &= right; left结果为0

|=

按位或赋值:将左边操作数和右操作数按位或后赋给左边操作数

left |= right; left结果为3

^=

按位异或赋值:将左边操作数和右操作数按位异或后赋给左边操作数

left ^= right; left结果为3

<<=

左移赋值:将左边操作数左移右操作数位数后赋给左边操作数

left <<= right; left结果为4

>>=

右移赋值:将左边操作数右移右操作数位数后赋给左边操作数

left >>= right; left结果为0

条件运算符 (? :)

cava目前暂不支持条件运算符,有相关寻求的用户可以使用if语句进行替代。

运算符的优先级

在编码过程中,我们经常会遇到多个运算符混合使用的情况,下表列出了cava支持的运算符的优先级:

优先级

运算符

结合性

1

() [] .

从左向右

2

! +(正) -(负) ~ ++ —

从右向左

3

* / %

从左向右

4

+(加) -(减)

从左向右

5

<< >>

从左向右

6

< <= > >=

从左向右

7

== !=

从左向右

8

&

从左向右

9

^

从左向右

10

|

从左向右

11

&&

从左向右

12

||

从左向右

13

= += -= *= /= %= &= |= ^= ~= <<= >>=

从右向左

上表中优是按照优先级从高到低的顺序,也就是优先级为1的最高,优先级14最低。但是在编码过程做我们很难提前预判没一个操作符的优先级,所以最好的办法就是我们通过()为每一个运算符强行指定其运算顺序,比如:

int a = 1;
int b = 2;
int c = a * (b + 2); //通过()强制b+2优先计算