算数运算符
算数运算符可以用于数学计算。
算数运算符
- +:加法运算
- -:减法运算/取负运算
- *:乘法运算
- /:除法运算
- %:取余
- ++:自加
- --:自减
// 除法运算(整数相除取整,小数相除得到小数)
110 / 100 = 1
110f / 100f = 1.1
110d / 100d = 1.1
110d / 100 = 1.1
110 / 100d = 1.1
赋值运算符
算数赋值运算符
- =:将右边变量的值赋给左边变量
- +=:a+=b 等价于 a=a+b
- -=:a-=b 等价于 a=a-b
- *=:a*=b 等价于 a=a*b
- /=:a/=b 等价于 a=a/b
- %=:a%=b 等价于 a=a%b
布尔赋值运算符
- &=:a&=b 等价于 a=a&b
- |=:a|=b 等价于 a=a|b
- ^=:a^=b 等价于 a=a^b
位移赋值运算符
- >>=:var1>>=var2 等价于 var1=var1>>var2
- <<=:var1<<=var2 等价于 var1=var1<
关系与逻辑运算符
- <:小于
- >:大于
- <=:小于等于
- >=:大于等于
- ==:等于
- !=:不等于
- &&:与(同时为真,则真),比逻辑与的性能好,如果 var1 已经能判断结果,就不需要判断 var2 了
- ||:或(一个为真,则真),比逻辑或的性能好,如果 var1 已经能判断结果,就不需要判断 var2 了
- !:非(真则假,假则真)
- &:逻辑与(var1=var2&var3,var2 和 var3 都是 true,则 var1 为 true,否则为 false),总是要判断 var1 和 var2
- |:逻辑或(var1=var2|var3,var2 和 var3 有一个为 true,var1 为 true,否则为 false),总是要判断 var1 和 var2
- ^:逻辑异或(var1=var2^var3,var2 和 var3 中有且仅有一个是 true,var1 的值就是 true,否则为 false)
按位运算符
- &(二元):按位与
- |(二元):按位或
- ^(二元):按位异或
- ~(一元):按位取反
// 按位与
1&1--->1
1&0--->0
0&1--->0
0&0--->0
// 按位或
1|1--->1
1|0--->1
0|1--->1
0|0--->0
// 按位异或
// 与逻辑异或相同,有且只有一个是1,最终才是1
1^1--->0
1^0--->1
0^1--->1
0^0--->0
// 按位运算符实例
int result,op1,op2;
op1 = 4; // 二进制形式 100
op2 = 5; // 二进制形式 101
result = op1&op2; // 二进制形式 100,所以最后值为 4
result = op1|op2; // 二进制形式 101,所以最后值为 5
位移运算符
- >>:var1 = var2>>var3,把 var2 的二进制值向右移动 var3 位
- <<:var1 = var2<<var3,把 var2 的二进制值向左移动 var3 位
int var1;
int var2 = 10; // 二进制是 1010
int var3 = 2;
var1 = var2 << var3; // 向左移两位后是 101000,所以是 40(实际上向左移一位,就将原始值乘以 2,移两位就再乘以 2,……)
其他运算符
- new:创建一个类的实例:new Class1()
- typeof:获取数据类型说明
- .:获取对象的方法或属性
- ? ::三元运算符,string str1 = a>b ? "变量a大于变量b" : "变量a小于等于变量b"
- ??:如果前面的变量值为 null,则结果为后面的变量值,否则结果为前面的变量值,str3 = str1 ?? str2;
运算符的优先级
优先级由高到低:
- ++、--(用作前缀)、()、+、-(一元)、!、~
- *、/、%
- +、-
- <<、>>
- ==、!=
- &
- ^
- |
- &&
- ||
- =、*=、/=、%=、-=、<<=、>>=、&=、^=、|=
- ++、--(用作后缀)