一、运算符
(1)算术运算符
运算符 | 说明 | 解释 |
+ | 加 | 可以作为“正”号 |
- | 减 | 可以作为“负”号 |
* | 乘 | - |
/ | 除 | 除数不能为0 |
% | 取余 | 除数不能为0 |
(2)自加自减运算符
运算符 | 说明 | 解释 |
++ | 自增运算符 | ++/--i:i 先加1/减1,变化后的值再参与运算 i++/--:i 的值先参与运算,然后再加1/减1 |
-- | 自减运算符 |
j = ++i; //相当于: i++; j = i;
j = i++;// 相当于: j = i; i++;
(3)赋值运算符
运算符 | 示例 | 解释 | 运算符 | 示例 | 解释 |
= | x = y | y赋值给x | &= | x &= y | 位与赋值,x = x & y |
+= | x += y | 加赋值,x = x + y | |= | x |= y | 位或赋值, x = x | y |
-= | x -= y | 减赋值,x = x - y | >>= | x >>= y | 右移赋值,x = x >> y |
*= | x *= y | 乘赋值, x= x * y | <<= | x <<= y | 左移赋值, x = x << y |
/= | x /= y | 除赋值,x = x / y | ^= | x ^= y | 异或赋值,x = x ^ y |
%= | x %= y | 取余赋值,x = x % y |
(4)关系运算符
运算符 | 作用 | 结果 |
> | 大于 | 比较结果布尔值(true 或 false) |
< | 小于 | |
== | 等于 | |
>= | 大于等于 | |
<= | 小于等于 | |
!= | 不等于 |
(5)逻辑运算符
运算符 | 含义 | 示例 | 结合方向 | 结果 |
&& | 逻辑与 | x && y | 左到右 | 比较结果为true或false |
|| | 逻辑或 | x || y | 左到右 | |
! | 逻辑非 | !x | 右到左 |
(6)位运算符
运算符 | 含义 | 示例 | 计算结果 |
& | 按位与 | x & y | 对应二进制位都为” 1 “ 结果为 ” 1 “,否则为” 0 “ |
| | 按位或 | x | y | 对应二进制位都为” 0 “ 结果为 ” 0“,否则为” 1 “ |
~ | 按位取反 | ~x | 对应二进制位取反,” 1 “->” 0 “,” 0 “ ->" 1 " |
^ | 按位异或 | x ^ y | 对应二进制位同为” 0 “ 或 ” 1 “结果为” 0 “,否则为” 1 “ |
(7)移位操作
运算符 | 含义 | 注意 |
<< | 左移 | 左移N位,右侧移出的空位补” 0 “ |
>> | 右移 | 右移N位,如果最高位为” 1 “,左侧移出的空位则补” 1 “,否则补” 0 “ |
(8)C#特殊运算符
is 运算符:检查变量是否为指定的类型。
条件运算符:(条件) ? 表达式1 : 表达式2,条件为true,结果为表达式1,否则为表达式2.
new运算符:用于创建一个新的类型实例。
typeof运算符:用于获得系统原型对象的类型。
二、运算符优先级
通常情况下,运算符的大致顺序由高到底依次为:
自增自减运算符 —> 算术运算符 —>关系运算符 —> 逻辑运算符 —> 赋值运算符。
如果两个运算符优先级相同,则优先处理左侧的表达式。另外括号”()“会提升运算符的优先级,程序被执行时,括号“()”内的运算符将会被优先执行。
建议编码时,出现多个运算符的表达式时,应当用括号”()“表明处理顺序,以方便理解和进行后续的代码维护。
分类 | 运算符 | 优先级次序 |
基本 | x.y, f(x), s[x], x++, x--, new, typeof, checked, unchecked | 由 高 到 低 |
一元 | +(正), -(负), !, ~, ++x, --x, (T)x | |
乘除 | *, /, % | |
加减 | +, - | |
移位 | <<, >> | |
比较 | <, >, <=, >=, is, as | |
相等 | ==, != | |
位与 | & | |
位异或 | ^ | |
位或 | | | |
逻辑与 | && | |
逻辑或 | || | |
条件 | ?: | |
赋值 | =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= |