跳转到内容

C Sharp 运算符

来自代码酷

C#运算符[编辑 | 编辑源代码]

C#运算符是用于在程序中执行各种数学、逻辑和位运算的特殊符号。它们是构建表达式的基础元素,允许开发者对变量和值进行计算、比较和操作。C#提供了丰富的运算符类型,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。

运算符类型[编辑 | 编辑源代码]

算术运算符[编辑 | 编辑源代码]

算术运算符用于执行基本的数学运算,如加法、减法、乘法、除法等。

算术运算符列表
运算符 描述 示例
+ 加法 a + b
- 减法 a - b
* 乘法 a * b
/ 除法 a / b
% 取模(余数) a % b
++ 自增 a++++a
-- 自减 a----a

示例代码[编辑 | 编辑源代码]

int a = 10;
int b = 3;

Console.WriteLine(a + b); // 输出: 13
Console.WriteLine(a - b); // 输出: 7
Console.WriteLine(a * b); // 输出: 30
Console.WriteLine(a / b); // 输出: 3 (整数除法)
Console.WriteLine(a % b); // 输出: 1 (余数)

关系运算符[编辑 | 编辑源代码]

关系运算符用于比较两个值,返回布尔结果(truefalse)。

关系运算符列表
运算符 描述 示例
== 等于 a == b
!= 不等于 a != b
> 大于 a > b
< 小于 a < b
>= 大于或等于 a >= b
<= 小于或等于 a <= b

示例代码[编辑 | 编辑源代码]

int x = 5;
int y = 10;

Console.WriteLine(x == y); // 输出: False
Console.WriteLine(x != y); // 输出: True
Console.WriteLine(x > y);  // 输出: False
Console.WriteLine(x < y);  // 输出: True

逻辑运算符[编辑 | 编辑源代码]

逻辑运算符用于组合多个布尔表达式。

逻辑运算符列表
运算符 描述 示例
&& 逻辑与(AND) a && b
逻辑或(OR) a b
! 逻辑非(NOT) !a

示例代码[编辑 | 编辑源代码]

bool isTrue = true;
bool isFalse = false;

Console.WriteLine(isTrue && isFalse); // 输出: False
Console.WriteLine(isTrue || isFalse); // 输出: True
Console.WriteLine(!isTrue);           // 输出: False

位运算符[编辑 | 编辑源代码]

位运算符直接对二进制位进行操作。

位运算符列表
运算符 描述 示例
& 按位与 a & b
按位或 b
^ 按位异或 a ^ b
~ 按位取反 ~a
<< 左移 a << b
>> 右移 a >> b

示例代码[编辑 | 编辑源代码]

int num1 = 5;    // 二进制: 0101
int num2 = 3;    // 二进制: 0011

Console.WriteLine(num1 & num2);  // 输出: 1 (0001)
Console.WriteLine(num1 | num2);  // 输出: 7 (0111)
Console.WriteLine(num1 ^ num2);  // 输出: 6 (0110)
Console.WriteLine(~num1);        // 输出: -6 (补码表示)
Console.WriteLine(num1 << 1);    // 输出: 10 (1010)
Console.WriteLine(num1 >> 1);    // 输出: 2 (0010)

赋值运算符[编辑 | 编辑源代码]

赋值运算符用于给变量赋值,并可以结合算术或位运算。

赋值运算符列表
运算符 描述 示例
= 简单赋值 a = b
+= 加后赋值 a += b
-= 减后赋值 a -= b
*= 乘后赋值 a *= b
/= 除后赋值 a /= b
%= 取模后赋值 a %= b
&= 按位与后赋值 a &= b
= 按位或后赋值 = b
^= 按位异或后赋值 a ^= b
<<= 左移后赋值 a <<= b
>>= 右移后赋值 a >>= b

示例代码[编辑 | 编辑源代码]

int value = 10;
value += 5;  // 等价于 value = value + 5
Console.WriteLine(value); // 输出: 15

运算符优先级[编辑 | 编辑源代码]

运算符优先级决定了表达式中运算的执行顺序。以下是常见运算符的优先级(从高到低):

  1. 括号 ()
  2. 一元运算符(如 ++, --, !, ~
  3. 乘法、除法、取模(*, /, %
  4. 加法、减法(+, -
  5. 移位运算符(<<, >>
  6. 关系运算符(<, >, <=, >=
  7. 相等运算符(==, !=
  8. 位与(&
  9. 位异或(^
  10. 位或(|
  11. 逻辑与(&&
  12. 逻辑或(||
  13. 条件运算符(?:
  14. 赋值运算符(=, +=, -= 等)

优先级示例[编辑 | 编辑源代码]

int result = 5 + 3 * 2;  // 先计算 3 * 2,再 +5
Console.WriteLine(result); // 输出: 11

bool logicalResult = true || false && false;  // && 优先级高于 ||
Console.WriteLine(logicalResult); // 输出: True

实际应用案例[编辑 | 编辑源代码]

案例1:计算圆的面积[编辑 | 编辑源代码]

double radius = 5.0;
double area = Math.PI * radius * radius;  // 使用乘法运算符
Console.WriteLine($"圆的面积: {area}");

案例2:判断闰年[编辑 | 编辑源代码]

int year = 2024;
bool isLeapYear = (year % 400 == 0) || (year % 100 != 0 && year % 4 == 0);
Console.WriteLine($"{year}年是闰年吗? {isLeapYear}");

高级主题:运算符重载[编辑 | 编辑源代码]

C#允许为自定义类型重载运算符,使其支持类似内置类型的运算。

public class Vector
{
    public int X { get; set; }
    public int Y { get; set; }

    // 重载 + 运算符
    public static Vector operator +(Vector v1, Vector v2)
    {
        return new Vector { X = v1.X + v2.X, Y = v1.Y + v2.Y };
    }
}

// 使用示例
Vector v1 = new Vector { X = 1, Y = 2 };
Vector v2 = new Vector { X = 3, Y = 4 };
Vector sum = v1 + v2;  // 使用重载的 + 运算符
Console.WriteLine($"向量和: ({sum.X}, {sum.Y})");

总结[编辑 | 编辑源代码]

C#提供了丰富的运算符类型,使开发者能够高效地处理各种计算和逻辑操作。理解运算符的优先级和结合性对于编写正确的表达式至关重要。对于高级用户,运算符重载提供了扩展自定义类型行为的强大工具。

通过本指南,您应该已经掌握了C#运算符的核心概念及其实际应用。建议通过实践练习来巩固这些知识。