C# 运算符详解:类型、实例及优先级

C# 是一种功能强大的面向对象编程语言,提供了丰富的内置运算符,以帮助开发者执行数学、逻辑、位操作等各种任务。本文将详细介绍 C# 中常见的运算符,涵盖算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及其他特殊运算符,并且会通过实例来帮助您深入理解这些运算符的使用方式和优先级。

1. 算术运算符

算术运算符用于执行数学计算,C# 中的算术运算符包括加、减、乘、除、取余、自增和自减等。

运算符列表

运算符描述示例
+两个操作数相加A + B
-从第一个操作数中减去第二个操作数A - B
*两个操作数相乘A * B
/除法,返回商A / B
%取余,返回余数A % B
++自增,操作数加 1A++++A
--自减,操作数减 1A----A

实例

using System;

namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 21;
            int b = 10;
            int c;

            c = a + b;
            Console.WriteLine("Line 1 - c 的值是 {0}", c);  // 31
            c = a - b;
            Console.WriteLine("Line 2 - c 的值是 {0}", c);  // 11
            c = a * b;
            Console.WriteLine("Line 3 - c 的值是 {0}", c);  // 210
            c = a / b;
            Console.WriteLine("Line 4 - c 的值是 {0}", c);  // 2
            c = a % b;
            Console.WriteLine("Line 5 - c 的值是 {0}", c);  // 1

            // 自增运算符示例
            c = ++a;  
            Console.WriteLine("Line 6 - c 的值是 {0}", c);  // 22

            // 自减运算符示例
            c = --a;
            Console.WriteLine("Line 7 - c 的值是 {0}", c);  // 21
        }
    }
}

输出结果:

Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 22
Line 7 - c 的值是 21

2. 关系运算符

关系运算符用于比较两个操作数的关系,通常用于条件判断。

运算符列表

运算符描述示例
==判断两个操作数是否相等(A == B)
!=判断两个操作数是否不相等(A != B)
>判断左操作数是否大于右操作数(A > B)
<判断左操作数是否小于右操作数(A < B)
>=判断左操作数是否大于或等于右操作数(A >= B)
<=判断左操作数是否小于或等于右操作数(A <= B)

实例

using System;

class Program
{
    static void Main(string[] args)
    {
        int a = 21;
        int b = 10;

        if (a == b)
        {
            Console.WriteLine("Line 1 - a 等于 b");
        }
        else
        {
            Console.WriteLine("Line 1 - a 不等于 b");
        }
        if (a < b)
        {
            Console.WriteLine("Line 2 - a 小于 b");
        }
        else
        {
            Console.WriteLine("Line 2 - a 不小于 b");
        }
        if (a > b)
        {
            Console.WriteLine("Line 3 - a 大于 b");
        }
        else
        {
            Console.WriteLine("Line 3 - a 不大于 b");
        }

        // 改变 a 和 b 的值
        a = 5;
        b = 20;

        if (a <= b)
        {
            Console.WriteLine("Line 4 - a 小于或等于 b");
        }
        if (b >= a)
        {
            Console.WriteLine("Line 5 - b 大于或等于 a");
        }
    }
}

输出结果:

Line 1 - a 不等于 b
Line 2 - a 不小于 b
Line 3 - a 大于 b
Line 4 - a 小于或等于 b
Line 5 - b 大于或等于 a

3. 逻辑运算符

逻辑运算符用于连接多个条件表达式,返回布尔值结果。

运算符列表

运算符描述示例
&&逻辑与运算符,当两个操作数都为 true 时结果为 true(A && B)
``逻辑或运算符,当任一操作数为 true 时结果为 true`(AB)`
!逻辑非运算符,将操作数的布尔值取反!(A && B)

实例

using System;

namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            bool a = true;
            bool b = true;

            if (a && b)
            {
                Console.WriteLine("Line 1 - 条件为真");
            }
            if (a || b)
            {
                Console.WriteLine("Line 2 - 条件为真");
            }

            a = false;
            b = true;

            if (a && b)
            {
                Console.WriteLine("Line 3 - 条件为真");
            }
            else
            {
                Console.WriteLine("Line 3 - 条件不为真");
            }
            if (!(a && b))
            {
                Console.WriteLine("Line 4 - 条件为真");
            }
        }
    }
}

输出结果:

Line 1 - 条件为真
Line 2 - 条件为真
Line 3 - 条件不为真
Line 4 - 条件为真

4. 位运算符

位运算符按位对整数进行操作,通常用于处理二进制数据。

运算符列表

运算符描述示例
&位与运算符A & B
``位或运算符`AB`
^位异或运算符A ^ B
~位取反运算符~A
<<左移运算符A << 2
>>右移运算符A >> 2

实例

using System;

namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 60; // 60 = 0011 1100
            int b = 13; // 13 = 0000 1101
            int c = 0;

            c = a & b;   // 12 = 0000 1100
            Console.WriteLine("Line 1 - c 的值是 {0}", c);

            c = a | b;   // 61 = 0011 1101
            Console.WriteLine("Line 2 - c 的值是 {0}", c);

            c = a ^ b;   // 49 = 0011 0001
            Console.WriteLine("Line 3 - c 的值是 {0}", c);

            c = ~a;      // -61 = 1100 0011
            Console.WriteLine("Line 4 - c 的值是 {0}", c);

            c = a << 2;  // 240 = 1111 0000
            Console.WriteLine("Line 5 - c 的值是 {0}", c);

            c = a >> 2;  // 15 = 0000 1111
            Console.WriteLine("Line 6 - c 的值

是 {0}", c);
}
}
}


### 输出结果:

Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15


## 5. 赋值运算符

赋值运算符用于将右边的值赋给左边的变量。

### 运算符列表

| 运算符 | 描述 | 示例 |
| ------ | ---- | ---- |
| `=` | 赋值运算符 | `C = A + B` |
| `+=` | 加赋值运算符 | `C += A` 相当于 `C = C + A` |
| `-=` | 减赋值运算符 | `C -= A` 相当于 `C = C - A` |
| `*=` | 乘赋值运算符 | `C *= A` 相当于 `C = C * A` |
| `/=` | 除赋值运算符 | `C /= A` 相当于 `C = C / A` |
| `%=` | 取余赋值运算符 | `C %= A` 相当于 `C = C % A` |

### 实例

```csharp
using System;

namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 21;
            int c;

            c = a;
            Console.WriteLine("Line 1 - =  c 的值 = {0}", c);

            c += a;
            Console.WriteLine("Line 2 - += c 的值 = {0}", c);

            c -= a;
            Console.WriteLine("Line 3 - -=  c 的值 = {0}", c);

            c *= a;
            Console.WriteLine("Line 4 - *=  c 的值 = {0}", c);

            c /= a;
            Console.WriteLine("Line 5 - /=  c 的值 = {0}", c);

            c = 200;
            c %= a;
            Console.WriteLine("Line 6 - %=  c 的值 = {0}", c);

            c <<= 2;
            Console.WriteLine("Line 7 - <<=  c 的值 = {0}", c);

            c >>= 2;
            Console.WriteLine("Line 8 - >>=  c 的值 = {0}", c);

            c &= 2;
            Console.WriteLine("Line 9 - &=  c 的值 = {0}", c);

            c ^= 2;
            Console.WriteLine("Line 10 - ^=  c 的值 = {0}", c);

            c |= 2;
            Console.WriteLine("Line 11 - |=  c 的值 = {0}", c);
        }
    }
}

输出结果:

Line 1 - =     c 的值 = 21
Line 2 - +=    c 的值 = 42
Line 3 - -=    c 的值 = 21
Line 4 - *=    c 的值 = 441
Line 5 - /=    c 的值 = 21
Line 6 - %=    c 的值 = 11
Line 7 - <<=    c 的值 = 44
Line 8 - >>=    c 的值 = 11
Line 9 - &=    c 的值 = 2
Line 10 - ^=    c 的值 = 0
Line 11 - |=    c 的值 = 2

6. 其他运算符

C# 中还有一些特殊的运算符,包括条件运算符、sizeoftypeof 等。

重要运算符

运算符描述示例
sizeof()返回数据类型的大小sizeof(int)
typeof()获取类型对象typeof(int)
? :三元条件运算符a > b ? "A大于B" : "A不大于B"

实例

using System;

namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("int 的大小是 {0}", sizeof(int));
            Console.WriteLine("short 的大小是 {0}", sizeof(short));

            int a = 10;
            int b = (a == 1) ? 20 : 30;
            Console.WriteLine("b 的值是 {0}", b);

            b = (a == 10) ? 20 : 30;
            Console.WriteLine("b 的值是 {0}", b);
        }
    }
}

输出结果:

int 的大小是 4
short 的大小是 2
b 的值是 30
b 的值是 20

7. 运算符优先级

在 C# 中,运算符的优先级决定了表达式中运算的顺序。高优先级的运算符会先执行。在实际编程中,合理使用括号来改变运算顺序有助于提高代码的可读性和准确性。

优先级简要概括:

  • 括号优先:最先计算。
  • 乘除:先于加减运算符。
  • 加减:比移位运算符低。
  • 位移运算:在关系运算符之前。
  • 关系运算符:在逻辑运算符之前。

例如:

int a = 10, b = 5, c = 2;
int result = a + b * c;  // 先计算乘法,再计算加法
Console.WriteLine(result);  // 输出20

通过运算符的优先级控制,开发者可以确保程序按预期执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bugcome_com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值