1. 逻辑数据类型:bool
你应该已经发现,C# 里有个超好用的操作符 —— if-else。如果括号里的条件为真,它就执行一段代码,否则就执行另一段。
为了方便处理那些只能为真或假的表达式,C# 专门加了个类型 —— bool。它最大的特点就是,这种类型的变量只能有两个值:true(真)和 false(假)。
你不能给 bool 类型的变量赋别的值,编译器会直接报错。
举几个 bool 类型变量的例子:
bool isAdult = true;
bool hasMoney = false;
bool 类型的变量就俩值 —— true(真)和 false(假)。就这样!跟单元测试差不多 —— 要么“通过”,要么“挂了”(哈哈)。
2. 比较操作
那为啥要有这么原始的类型?bool 的真正威力在于我们可以写出各种 逻辑表达式。这些表达式通常用比较操作符搞出来。
| 操作符 | 作用 | 例子 | 结果 |
|---|---|---|---|
| == | 等于 | |
true 或 false |
| != | 不等于 | |
true 或 false |
| > | 大于 | |
true 或 false |
| < | 小于 | |
true 或 false |
| >= | 大于等于 | |
true 或 false |
| <= | 小于等于 | |
true 或 false |
例子:
int age = 20;
bool isAdult = age >= 18; // true (20 大于等于 18)
bool isTeenager = age >= 13 && age < 18; // false (20 不小于 18)
bool isEven = age % 2 == 0; // true (20 能被 2 整除)
isAdult 这里会变成 true,因为 20 确实是“成年人”。
重点1:
两个字符的操作符不能拆开写。
a < = 10
speed > = max
age = = 18
time ! = 0
重点2:
注意,没有 => 和 =< 这种操作符,只有 <= 和 >=。你要是写 a =< 3,代码直接编译不过。
重点3:
在 C# 里你不能写 18 < age < 65 这种表达式。因为 18 < age 的结果是 true 或 false,而 true < 65(类型不一样)根本不能比。在 C# 里就是这样。
3. 逻辑操作
在 C# 里你不能写 18 < age < 65 —— 语法不对,程序直接编译不过。
不过你可以这样写:
(18 < age) 和 (age < 65)
当然,和 这里其实要用别的逻辑操作符,下面我们就来聊聊这些操作符。
C# 里有三个逻辑操作符:AND(和)、OR(或)、NOT(非)。
好消息:用括号你可以写出多复杂的逻辑表达式都行。
坏消息:C# 的开发者没用 and、or、not 这些单词,而是用了 C++ 风格的符号。
| 逻辑操作符 | 理想 | 现实 |
|---|---|---|
| 和 (∧) | and | && |
| 或 (∨) | or | || |
| 非 (¬) | not | ! |
下面是 C# 里逻辑操作符的几个例子:
| 表达式 | 英文解释 | 中文解释 |
|---|---|---|
| (0 < a) && (a < 100) | (0 < a) and (a < 100) | (0 < a) 和 (a < 100) |
| (!a) && (!b) | (not a) and (not b) | (非 a) 和 (非 b) |
| !(!a || !b) | not((not a) or (not b)) | 非((非 a) 或 (非 b)) |
4. 真值表
简单过一下逻辑操作。
AND 操作符
操作符 AND,也叫 和,也就是 &&,又叫合取、逻辑乘法。
| 表达式 | 结果 |
|---|---|
| true && true | true |
| true && false | false |
| false && true | false |
| false && false | false |
换句话说,只有两个参与表达式的值都是 true(真)时,结果才是 true(真)。其他情况都是 false(假)。
OR 操作符
操作符 OR,也叫 或,也就是 ||,又叫析取、逻辑加法。
| 表达式 | 结果 |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
换句话说,只要有一个参与表达式的值是 true(真),结果就是 true(真)。只有两个都是 false,结果才是 false。
NOT 操作符
操作符 NOT,也叫 非,也就是 !,又叫取反。
| 表达式 | 结果 |
|---|---|
| ! true | false |
| ! false | true |
把 true 变成 false,反之亦然。
常用表达式:
| 表达式 | 结果 |
|---|---|
| m && !m | false |
| m || !m | true |
| !(a && b) | !a || !b |
| !(a || b) | !a && !b |
5. 逻辑操作例子:and, or, not
"和" 操作,AND,用 && 表示
只有两个变量都为真,结果才为真。
int age = 16;
bool hasTicket = true;
bool canAttend = age >= 14 && hasTicket; // true (16 大于 14 且有票)
你年满 14 并且有票 —— 进来吧!
"或" 操作,OR,用 (||) 表示
只要有一个条件为真,结果就为真。
bool isAdmin = false;
bool isModerator = true;
bool canEdit = isAdmin || isModerator; // true (只要有一个 true 就能编辑)
你是管理员 或版主 —— 随便点按钮!
"非" 操作,NOT,用 (!) 表示
取反,把真变假,把假变真。
bool isWeekend = false;
bool shouldGoToWork = !isWeekend; // true (不是周末就得上班)
不是 周末 —— 该起床了!
组合:随便拼多复杂的条件
你可以随便组合多少逻辑操作(不过别太离谱,别写成“如果他不是不是不是不是管理员...”)。括号可以用(而且建议用!)让逻辑更清楚。
例子:
int age = 17;
bool hasTicket = false;
bool isVip = true;
bool canGo = (age >= 18 && hasTicket) || isVip; // true,因为 isVip = true
这个例子的逻辑是:如果你成年又有票,或者你是 VIP —— 就让你进。如果不是 VIP —— 只有成年又有票才行。
GO TO FULL VERSION