Cava 运算符

Cava提供了一系列运算符,本文为您介绍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, left21。

自减:操作数自身减一。

int a = left—; a结果为20,left19。

重要

除法运算符的右边变量不能为零,否则会触发除零异常。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优先计算