404 Not Found

404 Not Found


nginx

运算符与表达式

算术运算符

算术运算符用于执行基本的数学运算,包括加、减、乘、除和取余。

运算符 名称 示例 结果
+ 5 + 3 8
- 5 - 3 2
* 5 * 3 15
/ 7 / 2 3
% 取余 7 % 2 1
⚠️ 注意: 整数除法会截断小数部分。7 / 2 结果为 3,而非 3.5。若要得到浮点结果,至少一个操作数须为浮点型,如 7.0 / 2 结果为 3.5

示例

CSHARP
using System;

class Program
{
    static void Main()
    {
        int a = 17, b = 5;

        Console.WriteLine($"加法: {a} + {b} = {a + b}");
        Console.WriteLine($"减法: {a} - {b} = {a - b}");
        Console.WriteLine($"乘法: {a} * {b} = {a * b}");
        Console.WriteLine($"整数除法: {a} / {b} = {a / b}");
        Console.WriteLine($"浮点除法: {a * 1.0} / {b} = {a * 1.0 / b}");
        Console.WriteLine($"取余: {a} % {b} = {a % b}");
    }
}
▶ 试一试
TEXT
加法: 17 + 5 = 22
减法: 17 - 5 = 12
乘法: 17 * 5 = 85
整数除法: 17 / 5 = 3
浮点除法: 17 / 5 = 3.4
取余: 17 % 5 = 2

自增与自减运算符

自增 ++ 和自减 -- 运算符将变量的值增加或减少 1。前缀形式先改变值再使用,后缀形式先使用再改变值。

运算符 名称 说明
++x 前缀自增 先加 1,再使用值
x++ 后缀自增 先使用值,再加 1
--x 前缀自减 先减 1,再使用值
x-- 后缀自减 先使用值,再减 1

示例

CSHARP
using System;

class Program
{
    static void Main()
    {
        int x = 10;
        int y = 10;

        Console.WriteLine($"前缀自增: ++x = {++x}, x = {x}");
        Console.WriteLine($"后缀自增: y++ = {y++}, y = {y}");

        int m = 5;
        int n = 5;

        Console.WriteLine($"前缀自减: --m = {--m}, m = {m}");
        Console.WriteLine($"后缀自减: n-- = {n--}, n = {n}");
    }
}
▶ 试一试
TEXT
前缀自增: ++x = 11, x = 11
后缀自增: y++ = 10, y = 11
前缀自减: --m = 4, m = 4
后缀自减: n-- = 5, n = 4

关系运算符

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

运算符 名称 示例 结果
== 等于 5 == 5 true
!= 不等于 5 != 3 true
< 小于 3 < 5 true
> 大于 5 > 3 true
<= 小于等于 5 <= 5 true
>= 大于等于 5 >= 6 false
💡 提示: 不要混淆 =(赋值)和 ==(判断相等)。在 if 条件中误用 = 会导致编译错误或逻辑错误。

逻辑运算符

逻辑运算符用于组合布尔表达式。C# 使用 &&|| 进行短路求值,即当结果已确定时不再计算剩余表达式。

运算符 名称 示例 说明
&& 逻辑与 a && b 两者都为 true 则为 true(短路)
` ` 逻辑或
! 逻辑非 !a 取反
⚠️ 注意: C# 中逻辑运算使用 &&||,而非 &|&| 是按位运算符,也可以用于布尔运算但不短路。

示例

CSHARP
using System;

class Program
{
    static void Main()
    {
        int age = 25;
        bool hasLicense = true;

        bool canDrive = age >= 18 && hasLicense;
        Console.WriteLine($"可以驾车: {canDrive}");

        bool isWeekend = false;
        bool isHoliday = true;
        bool dayOff = isWeekend || isHoliday;
        Console.WriteLine($"休息日: {dayOff}");

        bool isRaining = true;
        Console.WriteLine($"没下雨: {!isRaining}");
    }
}
▶ 试一试
TEXT
可以驾车: True
休息日: True
没下雨: False

赋值运算符

赋值运算符用于将值赋给变量。复合赋值运算符将运算和赋值合并为一步。

运算符 等价写法 示例
= x = 10
+= x = x + y x += 5
-= x = x - y x -= 3
*= x = x * y x *= 2
/= x = x / y x /= 4
%= x = x % y x %= 3

条件运算符

条件运算符 ?: 是 C# 中唯一的三元运算符,根据条件返回两个值中的一个。

语法:condition ? valueIfTrue : valueIfFalse

示例

CSHARP
using System;

class Program
{
    static void Main()
    {
        int score = 72;
        string result = score >= 60 ? "及格" : "不及格";
        Console.WriteLine($"成绩 {score} 分: {result}");

        int a = 15, b = 9;
        int max = a > b ? a : b;
        Console.WriteLine($"较大值: {max}");
    }
}
▶ 试一试
TEXT
成绩 72 分: 及格
较大值: 15

null 合并运算符

?? 运算符在左侧操作数为 null 时返回右侧操作数的值,否则返回左侧值。??= 运算符(C# 8)是 null 合并赋值运算符,仅在变量为 null 时赋值。

CSHARP
using System;

class Program
{
    static void Main()
    {
        string name = null;
        string display = name ?? "匿名用户";
        Console.WriteLine($"名称: {display}");

        int? count = null;
        int total = count ?? 0;
        Console.WriteLine($"总数: {total}");

        string title = null;
        title ??= "默认标题";
        Console.WriteLine($"标题: {title}");

        title ??= "新标题";
        Console.WriteLine($"标题: {title}");
    }
}
TEXT
名称: 匿名用户
总数: 0
标题: 默认标题
标题: 默认标题

null 条件运算符

?. 运算符在访问成员前检查对象是否为 null。如果对象为 null,表达式直接返回 null,而非抛出 NullReferenceException

CSHARP
using System;

class Program
{
    static void Main()
    {
        string text = "Hello C#";
        Console.WriteLine($"长度: {text?.Length}");

        text = null;
        Console.WriteLine($"长度: {text?.Length}");

        int? len = text?.Length;
        Console.WriteLine($"类型: {len?.GetType().Name ?? "null"}");
    }
}
TEXT
长度: 8
长度:
类型: null

运算符优先级

下表从高到低列出 C# 常用运算符的优先级,同一行的运算符优先级相同。

优先级 运算符 说明
1 x++ x-- . ?. () [] 后缀、成员访问
2 ++x --x +x -x ! ~ 前缀、一元
3 * / % 乘除取余
4 + - 加减
5 < > <= >= is as 关系、类型检查
6 == != 相等
7 && 逻辑与
8 `
9 ?? ??= null 合并
10 ?: 条件
11 = += -= *= /= %= 赋值
💡 提示: 当不确定优先级时,使用括号 () 明确计算顺序,既可避免错误也提高可读性。

❓ 常见问题

Q 整数除法和浮点除法有什么区别?
A 整数除法截断小数部分,如 7 / 23;浮点除法保留小数,如 7.0 / 23.5
Q ++xx++ 有何不同?
A ++x 先自增再返回新值,x++ 先返回当前值再自增。在单独语句中效果相同,在表达式中结果不同。
Q &&& 有什么区别?
A && 是短路逻辑与,左侧为 false 时不再计算右侧;& 是按位与,也可用于布尔运算但不短路,始终计算两侧。
Q ???. 分别用于什么场景?
A ?? 用于提供 null 时的默认值;?. 用于安全访问可能为 null 的对象成员,避免 NullReferenceException。

📖 小节

📝 作业

  1. 编写程序,计算 7 / 27.0 / 2 的结果并输出,验证整数除法的截断行为。
  2. 编写程序,演示 ++xx++ 在表达式中的区别:令 int a = 5,分别计算 ++a * 3a++ * 3 并输出结果。
  3. 编写程序,使用条件运算符判断一个整数是正数、零还是负数(可嵌套 ?:)。
  4. 编写程序,创建一个 string 变量赋值为 null,分别使用 ???. 输出其默认值和安全访问长度。
  5. 编写程序,计算表达式 2 + 3 * 4(2 + 3) * 4 的结果,说明括号对优先级的影响。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏