🔷 C#

C# 中的比较运算符和逻辑运算符

这是什么?为什么需要它?

想象一下你在玩电脑游戏。要通关,你需要检查不同的条件:"如果英雄的生命值少于10,就开启护盾"或"如果玩家按下了按钮并且收集了所有金币,就打开门"。

在编程中,这种检查由比较运算符和逻辑运算符完成。它们帮助程序"思考"并做出决策。没有它们,代码就只是一串总是以相同方式执行的命令列表,而有了它们,程序可以针对不同情况做出反应。

例如,你在编写一个成绩计算器。如果学生得分超过90分——"优秀",如果低于50分——"不及格"。或者检查用户是否可以登录系统:如果密码正确并且账户未被锁定——就放行。

比较运算符用于比较数字或文本。逻辑运算符将多个条件组合成一个条件。它们共同构成了任何"智能"代码的基础。

语法和代码示例

在C#中,比较运算符如下所示:

  • == — 等于(注意:两个等号,不是一个!)
  • != — 不等于
  • > — 大于
  • < — 小于
  • >= — 大于或等于
  • <= — 小于或等于

逻辑运算符:

  • && — 与(两个条件都必须为真)
  • || — 或(至少一个条件为真)
  • ! — 非(将真变为假,反之亦然)

比较的结果始终是true(真)或false(假)。

示例1:年龄检查

int age = 14;
bool canDrive = age >= 18; // false,因为14小于18

if (canDrive)
{
    Console.WriteLine("你可以开车了!");
}
else
{
    Console.WriteLine("再长大一点吧。"); // 将执行这个
}

// 解释:
// age >= 18 — 这是一个比较。它返回false。
// if检查true/false。如果为true则执行第一个代码块,如果为false则执行第二个。

示例2:登录名和密码检查

string login = "user123";
string password = "qwerty";

// 检查登录名是否等于"admin"并且密码是否等于"12345"
if (login == "admin" && password == "12345")
{
    Console.WriteLine("欢迎,管理员!");
}
else
{
    Console.WriteLine("登录名或密码错误。");
}

// 解释:
// && 表示"与"。两个条件都必须为true。
// login == "admin" — false(因为login = "user123")
// 所以整个条件为false — 进入else。

示例3:学生或退休人员的折扣

int age = 20;
bool isStudent = true;

// 如果年龄小于18或者是学生,则享受折扣
if (age < 18 || isStudent)
{
    Console.WriteLine("享受50%折扣!");
}
else
{
    Console.WriteLine("全价。");
}

// 解释:
// || 表示"或"。只要一个条件为true即可。
// age < 18 — false(20不小于18)
// isStudent — true
// 所以条件为true — 给予折扣。

示例4:检查数字是否不为零

int number = 7;

if (number != 0)
{
    Console.WriteLine("数字不为零,可以除法。");
}
else
{
    Console.WriteLine("不能除以零!");
}

// 解释:
// != 检查"不等于"。
// 7 != 0 — 这是true,所以执行第一个代码块。

示例5:带非的复杂条件

bool isRaining = false;
bool hasUmbrella = true;

// 如果没下雨或者有伞 — 可以出去散步
if (!isRaining || hasUmbrella)
{
    Console.WriteLine("我们去散步吧!");
}
else
{
    Console.WriteLine("待在家里。");
}

// 解释:
// !isRaining — 这是"非isRaining"。isRaining = false,所以!false = true。
// true || true = true — 去散步。
// 如果isRaining = true且hasUmbrella = false,则!true = false,false || false = false — 待在家里。

与Python的比较

在Python中,相同的运算符看起来几乎一样,但有一些区别:

  • 代替&&写and
  • 代替||写or
  • 代替!写not
  • 比较运算符相同:==、!=、>、<、>=、<=

Python示例(与C#相同):

age = 14
can_drive = age >= 18  # False

if can_drive:
    print("You can drive a car!")
else:
    print("Grow up a bit more.")

# 逻辑运算符:
login = "user123"
password = "qwerty"

if login == "admin" and password == "12345":
    print("Welcome, admin!")
else:
    print("Invalid login or password.")

主要区别:在C#中,逻辑运算符是符号(&&、||、!),而在Python中是单词(and、or、not)。其余逻辑相同。

新手常见错误

  1. 混淆=和==
    = — 这是赋值(将值放入变量)。
    == — 这是比较(检查值是否相等)。
    错误:if (age = 18) — 这样不行!应该用if (age == 18)。
  2. 忘记运算符优先级
    先执行比较,然后执行逻辑运算符。但最好使用括号以清晰明了。
    示例:if (age > 18 && name == "Tom" || score > 100) — 不清楚意图是什么。正确写法:if ((age > 18 && name == "Tom") || score > 100)。
  3. 混淆&&和||
    &&要求所有条件都为真,||只要一个为真即可。