• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
学习笔记
Misaka的学习笔记
博客园    首页    新随笔    联系   管理    订阅  订阅
C# 运算符总结

运算符是一种告诉编译器执行特定行为的数学或逻辑操作的符号。C# 内置了许多类型的运算符,用于对这些类型的值执行一些基本的操作。这些运算符包括:算术运算符、比较运算符、布尔逻辑运算符、位运算符和相等运算符。

一、算术运算符

 ++ 增量运算符

 --  减量运算符

+ 一元加运算符

- 一元减运算符

示例:

int a = 10;
int b = 10;

// 后缀增量运算符 
Console.WriteLine(a++);     // 输出 10  
Console.WriteLine(a);       // 输出 11
// 前缀增量运算符 
Console.WriteLine(++b);     // 输出 11

int c = 10;
int d = 10;

// 后缀减量运算符 
Console.WriteLine(c--);     // 输出 10  
Console.WriteLine(c);       // 输出 9
// 前缀减量运算符 
Console.WriteLine(--d);     // 输出 9 

二元运算符

+ 加法运算符 变形 +=

- 减法运算符 变形 -=

* 乘法运算符  变形 *=

/ 除法运算符  变形 /=

% 余数运算符 变形 %=

二、布尔逻辑运算符

其中假设变量 a 为 true,变量 b 为 false:

! 逻辑非运算符 !a 为 False
& 逻辑与运算符 a & b 为 False
| 逻辑或运算符 a | b 为 True
^ 逻辑异或运算符 a ^ b 为 True
&& 条件逻辑与运算符 a && b 为 False
|| 条件逻辑或运算符 a || b 为 True

 

三、位运算符

假设变量 a 为 1,变量 b 为 2:

~ 按位求补运算符 ~a 等于 -2
<< 左移位运算符 a << 2 等于 4
>> 右移位运算符 a >> 2 等于 0
>>> 无符号右移运算符 a >>> 2 等于 0
& 逻辑与运算符 a & b 等于 0
^ 逻辑异或运算符 a ^ b 等于 3
| 逻辑或运算符 a | b 等于 3

示例如下:

uint a = 0b_0000_1111_0000_1111_0000_1111_0000_1100;
uint b = ~a; 

Console.WriteLine(Convert.ToString(b, toBase: 2));  // 输出: 11110000111100001111000011110011

uint x = 0b_1100_1001_0000_0000_0000_0000_0001_0001;
Console.WriteLine($"之前: {Convert.ToString(x, toBase: 2)}");

uint y = x << 4;
Console.WriteLine($"之后: {Convert.ToString(y, toBase: 2)}");

// 输出:
// 之前: 11001001000000000000000000010001
// 之后: 10010000000000000000000100010000 

uint c = 0b_1000_0000_0000_0000_0000_0000_0000_0000;
Console.WriteLine($"之前: {Convert.ToString(c, toBase: 2),32}");

uint d = c >> 3;
Console.WriteLine($"之后: {Convert.ToString(d, toBase: 2).PadLeft(32,
'0'),32}");
// 输出: 
// 之前: 10000000000000000000000000000000
// 之后: 00010000000000000000000000000000 

// 运算符 >> 和运算符 >>> 的区别: 
int x = -8;
Console.WriteLine($"之前: {x,11}, 十六进制: {x,8:x}, 二进制:{Convert.ToString(x, toBase: 2),32}");

int y = x >> 2;
Console.WriteLine($"之后 >>: {y,11}, 十六进制: {y,8:x}, 二进制:{Convert.ToString(y, toBase: 2),32}");

int z = x >>> 2;
Console.WriteLine($"之后 >>>: {z,11}, 十六进制: {z,8:x}, 二进制:{Convert.ToString(z, toBase: 2).PadLeft(32, '0'),32}");

// 输出:
// 之前: -8, 十六进制: fffffff8, 二进制: 11111111111111111111111111111000
// 之后 >>: -2, 十六进制: fffffffe, 二进制: 11111111111111111111111111111110
// 之后 >>>: 1073741822, 十六进制: 3ffffffe, 二进制: 00111111111111111111111111111110 

 

四、关系运算符

假设变量 a 为 1,变量 b 为 2

== 相等运算符 (a == b) 等于 False
!= 不等运算符 (a != b)等于 True
< 小于运算符 (a < b)等于 True
> 大于运算符 (a > b)等于 False
<= 小于或等于运算符 (a <= b)等于 True
>= 大于或等于运算符 (a >= b)等于 False

 

五、赋值变量符

假设有变量 a 与 b

= 赋值运算符 a = b 等同于 b 赋值给 a
+= 加且赋值运算符 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 <<= 2 等同于 a = a << 2
>>= 右移且赋值运算符 a >>= 2 等同于 a = a >> 2
&= 按位与且赋值运算符 a &= b 等同于 a = a & b
^= 按位异或且赋值运算符 a ^= b 等同于 a = a ^ b
|= 按位或且赋值运算符 a |= b 等同于 a = a | b

 

六、其他运算符

假设变量 int? a = 10、int[] arr = {1}:

sizeof() sizeof 运算符 sizeof(int) 返回 4
typeof() typeof 运算符 typeof(StreamReader) 返回 System.IO.StreamReader
is is 运算符 (a is int) 返回 True
as as 运算符 (a as double?) 返回 null
? : 三元条件运算符 (true ? a : 0) 返回 10
??/??= Null 合并操作符 (a ?? 0) 返回 10
?. /?[] Null 条件运算符 arr?[0] 返回 1

posted on 2023-07-01 01:12  我们打工人  阅读(467)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3