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