运算符
运算:对数据进行加工和处理。
运算符:表示各种运算的符号。
操作数:参与运算的数据。
根据操作数的个数,可以将运算符分为单目、双目和多目运算符。单目运算符只对1个操作数运算,双目运算符对2个操作数运算。
根据操作数和运算结果,运算符分为:算术运算符、关系运算符、逻辑运算符、位运算符。
算术运算符
算术运算符包括双目运算符和单目运算符。
双目算术运算符包括+(加)、-(减)、*(乘)、/(除)和%(取余)。
例如:
23+5 //结果是28
6*5 //结果是30
27/3 //结果是9
9%3 //结果是0
单目算术运算符包括++(自增)、--(自减)、-(负号)。
“++”和“--”用于整数类型的变量,不能用于常量或表达式。
“++”和“--”既可以出现在变量的左边,也可以出现在变量的右边。
例如:
int j=5;
j++; //结果,j等于6
++j; //结果,j等于7
--j; //结果,j等于6
j--; //结果,j等于5
关系运算符
关系运算是2个操作数之间的比较运算。
关系运算符有:>、<、>=、<=、= =和!=。
其中“= =”和“!=”用于布尔类型及字符串类型操作数。
字符类型操作数的比较依据是其Unicode值,字符串从左向右依此对每个字符比较。
关系运算的运算结果是布尔类型值。如果关系成立,结果的值为true;否则,结果的值为false。
逻辑运算符
逻辑运算是对布尔类型操作数进行的与、或、非、异或等运算,运算结果仍然是布尔类型值。
逻辑运算符有:&(与)、|(或)、!(非)、^(异或)、&&(条件与)、||(条件或)。
例如:
! true //结果是false
true & false //结果是false
true | false //结果是true
位运算符
位运算是对整数类型的操作数按二进制的位进行运算,所运算结果仍然是整数类型值。
位运算符有:
~(位反)、&(位与)、|(位或)、^(位异或)
<<(左移位)、>>(右移位)、>>>(无符号右移位)
例如:x=132,y=204;计算~x和x^y的值
(1)将整数转换为二进制数。
x=10000100,y=11001100
(2)对x按位进行取反操作。
~ 10000100=01111011
(3)对x,y按位进行异或操作
10000100
^ 11001100
01001000
(4)所得结果:~x=123,x^y=72。
赋值运算符
赋值运算用于给变量赋值,如下:变量名=表达式;
赋值运算的顺序是从右向左的,即先计算表达式的值,再将表达式的值赋予变量。
例如:
int i=3, j; //i的初始值是3
j=i+2; //结果,j的值是5
i=2*j; //结果,i的值是10
j=j+4; //结果,j的值是9
条件运算符
格式如下:表达式1 ?表达式2 :表达式3
其中“?:”称为条件运算符,它是三目运算符。
当“表达式1”的值是true,“表达式2”的值是最终表达式的值。
如果“表达式1”的值是false,“表达式3”的值是最终表达式的值。
表达式
表达式是用运算符将操作数连接起来的符合语法规则的运算式。
优先级
运算符 | 描述 | 优先级 | 结合性 |
. [] ( ) | 域,数组,括号 | 1 | 从左至右 |
++ -- - ! ~ | 一元运算符 | 2 | 从右至左 |
* / % | 乘,除,取余 | 3 | 从左至右 |
+ - | 加,减 | 4 | 从左至右 |
<< >> >>> | 位运算 | 5 | 从左至右 |
< <= > >= | 逻辑运算 | 6 | 从左至右 |
== != | 逻辑运算 | 7 | 从左至右 |
& | 按位与 | 8 | 从左至右 |
^ | 按位异或 | 9 | 从左至右 |
运算符 | 描述 | 优先级 | 结合性 |
| | 按位或 | 10 | 从左至右 |
&& | 逻辑与 | 11 | 从右至左 |
|| | 逻辑或 | 12 | 从左至右 |
? : | 条件运算 | 13 | 从左至右 |
= *= /= %= += -= <<= >>= >>>= &= ^= |= | 位运算 | 14 | 从左至右 |
表达式的数据类型由运算结果的数据类型决定。