C# 运算符详解:包含算术、赋值、比较、逻辑运算符及 Math 类应用

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 运算符用于对变量和值执行操作。在C#中,有多种运算符可用,包括算术运算符、关系运算符、逻辑运算符等。

运算符用于对变量和值执行操作。在C#中,有多种运算符可用,包括算术运算符、关系运算符、逻辑运算符等。

算术运算符

算术运算符用于执行常见的数学运算:

int x = 100 + 50;  // 加法,结果为 150
int y = x - 30;    // 减法,结果为 120
int z = x * 2;     // 乘法,结果为 300
int w = x / 3;     // 除法,结果为 50
int remainder = x % 3;  // 取余,结果为 0(100 除以 3 的余数)

Console.WriteLine("x: " + x);
Console.WriteLine("y: " + y);
Console.WriteLine("z: " + z);
Console.WriteLine("w: " + w);
Console.WriteLine("remainder: " + remainder);

递增和递减运算符

递增运算符 ++ 用于将变量的值增加 1,而递减运算符 -- 用于将变量的值减少 1:

int a = 5;
a++;  // 等同于 a = a + 1;
Console.WriteLine("a: " + a);  // 输出 6

int b = 10;
b--;  // 等同于 b = b - 1;
Console.WriteLine("b: " + b);  // 输出 9

注意事项

在实际编码中,请注意避免在表达式中使用过多的递增和递减运算符,以确保代码的可读性。递增和递减运算符的使用可能会导致代码难以理解,并引起潜在的错误。

赋值运算符

赋值运算符用于将值赋给变量。

在下面的示例中,我们使用赋值运算符(=)将值10赋给一个名为x的变量:

// 赋值运算符
int x = 10;

加法赋值运算符(+=)将一个值添加到变量中:

int x = 10;
x += 5;

所有赋值运算符的列表:

运算符 示例 等同于 试一试
= x = 5 x = 5
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3
%= x %= 3 x = x % 3
&= x &= 3 x = x & 3
= x = 3 x = x 3
^= x ^= 3 x = x ^ 3
>>= x >>= 3 x = x >> 3
<<= x <<= 3 x = x << 3

C# 比较运算符

比较运算符用于比较两个值(或变量)。这在编程中很重要,因为它帮助我们找到答案并做出决策。

比较的返回值要么是True,要么是False。这些值被称为布尔值

在下面的示例中,我们使用大于运算符(>)来判断5是否大于3:

int x = 5;
int y = 3;
Console.WriteLine(x > y); // 返回True,因为5大于3

所有比较运算符的列表:

运算符 名称 示例
== 等于 x == y
!= 不等于 x != y
> 大于 x > y
< 小于 x < y
>= 大于或等于 x >= y
<= 小于或等于 x <= y

C# 逻辑运算符

与比较运算符一样,您还可以使用逻辑运算符测试TrueFalse值。

逻辑运算符用于确定变量或值之间的逻辑关系:

逻辑与 (&&)

如果两个语句都为true,则返回True

x < 5 && x < 10

逻辑或 (||)

如果其中一个语句为true,则返回True

x < 5 || x < 4

逻辑非 (!)

反转结果,如果结果为true,则返回False

!(x < 5 && x < 10)

C# Math 类

C#Math 类提供了许多方法,允许您对数字执行数学运算。

示例:

using System;

public class MathDemo
{
   
    public static void Main()
    {
   
        // 使用 Math.Max() 查找最大值
        int max = Math.Max(5, 10);
        Console.WriteLine("最大值:{0}", max);

        // 使用 Math.Min() 查找最小值
        int min = Math.Min(5, 10);
        Console.WriteLine("最小值:{0}", min);

        // 使用 Math.Sqrt() 计算平方根
        double sqrt = Math.Sqrt(64);
        Console.WriteLine("平方根:{0}", sqrt);

        // 使用 Math.Abs() 计算绝对值
        double abs = Math.Abs(-4.7);
        Console.WriteLine("绝对值:{0}", abs);

        // 使用 Math.Round() 四舍五入
        double round = Math.Round(9.99);
        Console.WriteLine("四舍五入:{0}", round);
    }
}

输出:

最大值:10
最小值:5
平方根:8
绝对值:4.7
四舍五入:10

Math 类常用方法:

  • Math.Max(x, y):返回 x 和 y 中的最大值。
  • Math.Min(x, y):返回 x 和 y 中的最小值。
  • Math.Sqrt(x):返回 x 的平方根。
  • Math.Abs(x):返回 x 的绝对值。
  • Math.Round(x):将 x 四舍五入到最接近的整数。
  • Math.Pow(x, y):将 x 乘以自身 y 次。
  • Math.Log(x):返回 x 的自然对数。
  • Math.Sin(x):返回 x 的正弦值。
  • Math.Cos(x):返回 x 的余弦值。
  • Math.Tan(x):返回 x 的正切值。

注意:

  • Math 类中的方法都是静态方法,因此您无需创建 Math 类的实例即可使用它们。
  • Math 类中的方法是 double 精度的,如果您需要更高的精度,可以使用 decimal 类型或其他数学库。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关文章
|
18天前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
27 3
|
17天前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
34 1
|
16天前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
9 0
|
1月前
|
消息中间件 网络协议 安全
C# 一分钟浅谈:WebSocket 协议应用
【10月更文挑战第6天】在过去的一年中,我参与了一个基于 WebSocket 的实时通信系统项目,该项目不仅提升了工作效率,还改善了用户体验。本文将分享在 C# 中应用 WebSocket 协议的经验和心得,包括基础概念、C# 实现示例、常见问题及解决方案等内容,希望能为广大开发者提供参考。
99 0
|
1月前
|
Web App开发 网络协议 API
基于C#编写一个远程桌面应用
基于C#编写一个远程桌面应用
35 0
|
1月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
12 0
|
6月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
192 3
|
6月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
198 3
|
13天前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
28 3
|
1月前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。
101 0