0Pricing
C# Academy · 课时

运算符与表达式:算术、比较、逻辑

使用算术运算符(+、-、*、/、%)、比较运算符(==、!=、 、 =)和逻辑运算符(&&、||、!)。理解优先级与短路求值。

运算符与表达式:算术、比较、逻辑 是 CoddyKit 上的免费 C# Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 3 节课。

运算符概览

目标:使用算术、比较和逻辑运算符构建清晰的表达式。

  • 使用 + - * / % 进行数学运算
  • 比较值
  • 使用 && 和 || 组合检查条件

算术基础

算术:对整数使用 / 会截断结果;需要小数结果时请使用 double。

using System;

public class Program
{
  public static void Main(string[] args)
  {
    int a = 9;
    int b = 4;
    Console.WriteLine("a + b = " + (a + b));
    Console.WriteLine("a - b = " + (a - b));
    Console.WriteLine("a * b = " + (a * b));
    Console.WriteLine("a / b = " + (a / b)); // integer division
    Console.WriteLine("a % b = " + (a % b)); // remainder
  }
}

比较基础

比较运算符会产生 bool 结果,您可以使用逻辑运算符组合这些结果。

using System;

public class Program
{
  public static void Main(string[] args)
  {
    int x = 5;
    int y = 7;
    Console.WriteLine("x == y: " + (x == y));
    Console.WriteLine("x != y: " + (x != y));
    Console.WriteLine("x < y:  " + (x < y));
    Console.WriteLine("x <= y: " + (x <= y));
    Console.WriteLine("x > y:  " + (x > y));
    Console.WriteLine("x >= y: " + (x >= y));
  }
}

逻辑运算符

短路求值:左侧为 false 时,&& 会停止求值;左侧为 true 时,|| 会停止求值。这有助于避免不必要的工作。

using System;

public class Program
{
  static bool ExpensiveCheck()
  {
    Console.WriteLine("ExpensiveCheck ran");
    return true;
  }

  public static void Main(string[] args)
  {
    bool ok = false;
    // && short-circuits when the left is false
    if (ok && ExpensiveCheck())
    {
      Console.WriteLine("Both true");
    }
    else
    {
      Console.WriteLine("Left was false, skipped right");
    }

    bool isAdmin = true;
    bool hasTicket = false;

    // || short-circuits when the left is true
    if (isAdmin || hasTicket)
    {
      Console.WriteLine("Allowed");
    }

    // Negation
    Console.WriteLine("!hasTicket = " + (!hasTicket));
  }
}

优先级与 ()

优先级会影响结果;请添加括号,使意图更加明确并避免错误。

using System;

public class Program
{
  public static void Main(string[] args)
  {
    int n = 10;
    int m = 3;
    bool r1 = n - m * 2 == 4;        // * before -
    bool r2 = (n - m) * 2 == 14;     // grouped
    Console.WriteLine("r1 = " + r1);
    Console.WriteLine("r2 = " + r2);

    // Logical precedence: && before ||, but use () for clarity
    bool a = true, b = false, c = true;
    bool r3 = a || b && c;           // b&&c first → true
    bool r4 = (a || b) && c;         // grouped → true
    Console.WriteLine("r3 = " + r3);
    Console.WriteLine("r4 = " + r4);
  }
}

需要避免的陷阱

请避免意外结果:需要小数结果时提升为 double;利用短路求值跳过代价高昂的调用。

using System;

public class Program
{
  static int Counter = 0;

  static int Next()
  {
    Counter = Counter + 1;
    return Counter;
  }

  public static void Main(string[] args)
  {
    // Integer division pitfall
    int a = 1, b = 2;
    Console.WriteLine("1/2 int = " + (a / b)); // 0
    Console.WriteLine("1/2 double = " + (a / 2.0)); // 0.5

    // Side effects: function called only if needed
    bool cond = false;
    if (cond && Next() > 0)
    {
      Console.WriteLine("Will not run");
    }
    Console.WriteLine("Counter = " + Counter); // 0 because Next() skipped
  }
}

短路求值行为

快速检查:以下关于 && 和 || 的说法哪一项正确?

回顾

回顾:使用算术运算进行数学计算,使用比较运算进行判断,使用逻辑运算符组合检查条件。请优先使用括号提高可读性,并合理利用短路求值。

常见问题解答

「运算符与表达式:算术、比较、逻辑」课时是免费的吗?

是的 — 「运算符与表达式:算术、比较、逻辑」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 3 节课。

「运算符与表达式:算术、比较、逻辑」这节课中我会学到什么?

使用算术运算符(+、-、*、/、%)、比较运算符(==、!=、 、 =)和逻辑运算符(&&、||、!)。理解优先级与短路求值。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「运算符与表达式:算术、比较、逻辑」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 值与引用、字面量、var 推断、const/readonly
  2. 运算符与表达式:算术、比较、逻辑
  3. 实际使用后缀;强制转换与转换;C# 6 对象创建
← 返回 C# Academy