C# - 算术运算符
C# - 算术运算符
Section titled “C# - 算术运算符”什么是算术运算符?
Section titled “什么是算术运算符?”算术运算符是用于对 int、double 和 decimal 等数值类型执行数学计算的基本符号。它们构成了 C# 中大多数数值计算的基础。
核心算术运算符
Section titled “核心算术运算符”下表列出了 C# 中的二元算术运算符。我们假设 int a = 10; 和 int b = 20;。
| Operator | Symbol | Description | Example |
|---|---|---|---|
| Addition | + | 将两个操作数相加 | a + b 为 30 |
| Subtraction | - | 从第一个操作数中减去第二个操作数 | b - a 为 10 |
| Multiplication | * | 将两个操作数相乘 | a * b 为 200 |
| Division | / | 用第一个操作数除以第二个操作数 | b / a 为 2 |
| Modulus (Remainder) | % | 返回整数除法的余数 | 10 % 3 为 1 |
递增和递减运算符
Section titled “递增和递减运算符”这些是一元运算符,通过加 1 或减 1 来修改变量。它们有两种形式:前缀和后缀。
- 递增(
++):将整数值加一。 - 递减(
--):将整数值减一。
当在表达式中使用 ++ 或 -- 运算符时,它们的位置很重要:
- 前缀(
++variable):变量首先递增,然后将新值用于表达式。 - 后缀(
variable++):变量的原始值用于表达式,然后变量递增。
int x = 5;// 前缀:先将 x 递增到 6,然后将 6 赋值给 y。int y = ++x;// 此时,x 为 6,y 为 6。Console.WriteLine($"Prefix: x = {x}, y = {y}");
int a = 5;// 后缀:先将 a 的原始值(5)赋值给 b,然后将 a 递增到 6。int b = a++;// 此时,a 为 6,b 为 5。Console.WriteLine($"Postfix: a = {a}, b = {b}");
/** 预期输出:* Prefix: x = 6, y = 6* Postfix: a = 6, b = 5*/示例 1:基本操作
Section titled “示例 1:基本操作”所有核心算术运算符的简单演示。
int a = 11;int b = 5;
Console.WriteLine($"a = {a}, b = {b}");Console.WriteLine($"Addition: {a + b}"); // 输出:16Console.WriteLine($"Subtraction: {a - b}"); // 输出:6Console.WriteLine($"Multiplication: {a * b}"); // 输出:55Console.WriteLine($"Division: {a / b}"); // 输出:2(整数除法)Console.WriteLine($"Modulus: {a % b}"); // 输出:1(11 除以 5 的余数)示例 2:整数除法与浮点数除法
Section titled “示例 2:整数除法与浮点数除法”/ 运算符的行为因操作数的数据类型而异。当两个操作数都是整数时,它执行整数除法,会截断任何小数部分。
int intA = 7, intB = 2;double doubleA = 7.0, doubleB = 2.0;
// 整数除法会丢弃余数。Console.WriteLine($"Integer Division (7 / 2): {intA / intB}"); // 输出:3
// 要获得精确结果,至少一个操作数必须是浮点类型。Console.WriteLine($"Floating-Point Division (7.0 / 2.0): {doubleA / doubleB}"); // 输出:3.5Console.WriteLine($"Mixed-Type Division (7 / 2.0): {intA / doubleB}"); // 输出:3.5算术运算符在编程中无处不在。
用例 1:计算圆的面积
Section titled “用例 1:计算圆的面积”// 使用 Math.PI 常量以获得更好的精度。const double radius = 5.5;double area = Math.PI * radius * radius;
Console.WriteLine($"Circle Area: {area:F4}"); // :F4 格式化为 4 位小数// 预期输出:Circle Area: 95.0332用例 2:温度转换
Section titled “用例 2:温度转换”double celsius = 30;// 公式是 (摄氏度 * 9/5) + 32。// 注意:使用 9.0/5.0 来确保浮点除法。double fahrenheit = (celsius * 9.0 / 5.0) + 32;
Console.WriteLine($"{celsius}°C is equal to {fahrenheit}°F");// 预期输出:30°C is equal to 86°F最佳实践与注意事项
Section titled “最佳实践与注意事项”- 精度:对于需要高精度的财务或科学计算,请使用
decimal类型而不是double,以避免小的舍入误差。 - 除以零:整数除以零会抛出
DivideByZeroException。浮点数(double或float)除以零会产生Infinity、-Infinity或NaN(非数字),而不会抛出异常。如果不确定除数的值,请务必在除法前检查是否为零。 - 运算符优先级:乘法(
*)、除法(/)和取模(%)的优先级高于加法(+)和减法(-)。使用括号()来强制执行特定的运算顺序,这也可以提高代码可读性。 - 数值溢出:对整型(如
int)执行算术运算时,如果结果超出该类型的最大值,可能会发生溢出。对于关键计算,请使用checked关键字强制抛出OverflowException。
int max = int.MaxValue;try{ // 这段代码在一个 'checked' 上下文中。 int overflow = checked(max + 1);}catch (OverflowException ex){ Console.WriteLine("捕获到预期的溢出!");}