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 (余数)
关系运算符[编辑 | 编辑源代码]
关系运算符用于比较两个值,返回布尔结果(true
或 false
)。
运算符 | 描述 | 示例 |
---|---|---|
== |
等于 | 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
运算符优先级[编辑 | 编辑源代码]
运算符优先级决定了表达式中运算的执行顺序。以下是常见运算符的优先级(从高到低):
- 括号
()
- 一元运算符(如
++
,--
,!
,~
) - 乘法、除法、取模(
*
,/
,%
) - 加法、减法(
+
,-
) - 移位运算符(
<<
,>>
) - 关系运算符(
<
,>
,<=
,>=
) - 相等运算符(
==
,!=
) - 位与(
&
) - 位异或(
^
) - 位或(
|
) - 逻辑与(
&&
) - 逻辑或(
||
) - 条件运算符(
?:
) - 赋值运算符(
=
,+=
,-=
等)
优先级示例[编辑 | 编辑源代码]
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#运算符的核心概念及其实际应用。建议通过实践练习来巩固这些知识。