C# - 运算符:编程魔法的门户

你好,未来的编码巫师们!今天,我们将深入C#的奇妙世界——运算符。如果你之前从未写过一行代码,也不用担心——在本教程结束时,你将能够像专业人士一样熟练地玩转运算符!

C# - Operators

运算符是什么?

在我们开始之前,先来了解一下运算符是什么。可以把运算符想象成编程中的魔法棒。它们允许我们对数据执行操作,就像厨师使用不同的厨具来制作美味的菜肴一样。在C#中,我们有各种类型的运算符,帮助我们操作数据,创作出惊人的程序!

算术运算符:基础数学魔法

让我们从最简单的运算符开始——算术运算符。这些就像是每个巫师首先学习的基础咒语。

加法 (+)

int apples = 5;
int oranges = 3;
int totalFruit = apples + oranges;
Console.WriteLine($"总水果数: {totalFruit}");

输出:总水果数: 8

这里,我们在做苹果和橙子的加法(有人说你不应该这么做,但在C#中,我们喜欢反叛!)。+ 运算符将 applesoranges 的值相加,并将结果存储在 totalFruit 中。

减法 (-)

int cookies = 10;
int eaten = 3;
int remaining = cookies - eaten;
Console.WriteLine($"剩下的饼干: {remaining}");

输出:剩下的饼干: 7

- 运算符从 cookies 中减去 eaten 的值。这就像魔法——饼干消失了!

乘法 (*)

int students = 5;
int pencilsPerStudent = 2;
int totalPencils = students * pencilsPerStudent;
Console.WriteLine($"需要的铅笔总数: {totalPencils}");

输出:需要的铅笔总数: 10

* 运算符将 students 乘以 pencilsPerStudent。当你需要快速计算为班级购买多少铅笔时,它非常完美!

除法 (/)

int pizza = 8;
int friends = 3;
int slicesPerFriend = pizza / friends;
Console.WriteLine($"每个朋友的披萨片数: {slicesPerFriend}");

输出:每个朋友的披萨片数: 2

/ 运算符将 pizza 除以 friends。注意,我们得到的是2,而不是2.67。这是因为当除以整数时,C# 会舍去小数部分。就像电脑在披萨片上很小气!

求余 (%)

int pizza = 8;
int friends = 3;
int leftoverSlices = pizza % friends;
Console.WriteLine($"剩余的披萨片数: {leftoverSlices}");

输出:剩余的披萨片数: 2

% 运算符给出除法后的余数。这对于计算在和朋友分享披萨后你能吃多少片非常完美!

关系运算符:比较专家

现在,让我们转到关系运算符。这些运算符就像烹饪节目中的评委——它们比较事物,并给我们一个“是”或“否”的答案。

等于 (==)

int myAge = 25;
int yourAge = 25;
bool sameAge = (myAge == yourAge);
Console.WriteLine($"我们同龄吗? {sameAge}");

输出:我们同龄吗? True

== 运算符检查两个值是否相等。就像在问,“这两样东西完全一样吗?”

不等于 (!=)

string myFavoriteColor = "Blue";
string yourFavoriteColor = "Red";
bool differentFavorites = (myFavoriteColor != yourFavoriteColor);
Console.WriteLine($"我们喜欢的颜色不同吗? {differentFavorites}");

输出:我们喜欢的颜色不同吗? True

!= 运算符检查两个值是否不相等。就像在问,“这两样东西不一样吗?”

大于 (>) 和 小于 (<)

int myScore = 85;
int passingScore = 70;
bool passed = (myScore > passingScore);
Console.WriteLine($"我通过了吗? {passed}");

输出:我通过了吗? True

> 运算符检查左边的值是否大于右边的值。类似地,< 检查左边的值是否小于右边的值。

大于或等于 (>=) 和 小于或等于 (<=)

int myHeight = 180;
int doorHeight = 180;
bool canIPass = (myHeight <= doorHeight);
Console.WriteLine($"我能通过这扇门吗? {canIPass}");

输出:我能通过这扇门吗? True

这些运算符检查一个值是否大于或等于(或者小于或等于)另一个值。

逻辑运算符:决策者

逻辑运算符就像我们编程村庄中的智者。它们帮助我们通过组合不同的条件来做出复杂的决策。

AND (&&)

bool hasMoney = true;
bool isHungry = true;
bool willBuyFood = hasMoney && isHungry;
Console.WriteLine($"我会买食物吗? {willBuyFood}");

输出:我会买食物吗? True

&& 运算符只在两个条件都为真时返回真。就像在说,“只有我有钱并且饿了,我才会买食物。”

OR (||)

bool isRaining = false;
bool isCold = true;
bool willStayInside = isRaining || isCold;
Console.WriteLine($"我会待在室内吗? {willStayInside}");

输出:我会待在室内吗? True

|| 运算符只要至少有一个条件为真就返回真。就像在说,“如果下雨或者冷,我会待在室内。”

NOT (!)

bool isSunny = true;
bool isNotSunny = !isSunny;
Console.WriteLine($"天气不是晴朗的吗? {isNotSunny}");

输出:天气不是晴朗的吗? False

! 运算符反转一个布尔值。就像在说,“如果天气晴朗,那么它不是不晴朗!”

位运算符:二进制朋友

位运算符在数字的各个位上工作。它们就像编程世界中的微观厨师,在我们数据的最小层面上工作。

位与 (&)

int a = 5;  // 101 的二进制
int b = 3;  // 011 的二进制
int result = a & b;
Console.WriteLine($"5 & 3 的结果: {result}");

输出:5 & 3 的结果: 1

& 运算符对每一对位执行 AND 操作。就像在问,“这两个位都是1吗?”

位或 (|)

int a = 5;  // 101 的二进制
int b = 3;  // 011 的二进制
int result = a | b;
Console.WriteLine($"5 | 3 的结果: {result}");

输出:5 | 3 的结果: 7

| 运算符对每一对位执行 OR 操作。就像在问,“至少有一个位是1吗?”

赋值运算符:值的设置者

赋值运算符就像编程世界中的搬运工。它们帮助我们给变量赋值。

简单赋值 (=)

int x = 10;
Console.WriteLine($"x 现在是: {x}");

输出:x 现在是: 10

= 运算符简单地将一个值赋给一个变量。

复合赋值 (+=, -=, *=, /=)

int score = 100;
score += 50;  // 同样是:score = score + 50
Console.WriteLine($"新的分数: {score}");

输出:新的分数: 150

复合赋值运算符结合了算术操作和赋值。它们在编程中就像速记。

杂项运算符:特殊的

这些运算符就像厨师厨房中的独特工具——它们有特定、重要的工作。

三元运算符 (?:)

int age = 20;
string status = (age >= 18) ? "成人" : "未成年人";
Console.WriteLine($"状态: {status}");

输出:状态: 成人

三元运算符是if-else语句的简写形式。就像问一个问题并给出两个可能的答案。

C#中的运算符优先级

就像在数学中一样,C#在评估带有多个运算符的表达式时遵循特定的顺序。下面是运算符优先级的简化表:

优先级 运算符类别 运算符
最高 括号 ()
算术 *, /, %
算术 +, -
关系 <, >, <=, >=
等价 ==, !=
逻辑 AND &&
逻辑 OR ||
最低 赋值 =, +=, -=

记住,当你不确定时,使用括号来清楚地表达你的意图!

就这样,我的年轻的编码学徒们!你们刚刚被引入了C#运算符的魔法世界。记住,熟能生巧,所以不要害怕在你们的代码中尝试这些运算符。在你意识到之前,你将像真正的编码巫师一样编写程序!

快乐编码,愿运算符与你同在!

Credits: Image by storyset