CodeGym /课程 /C# SELF /布尔类型 bool 和逻辑操作

布尔类型 bool 和逻辑操作

C# SELF
第 3 级 , 课程 3
可用

1. 逻辑数据类型:bool

你应该已经发现,C# 里有个超好用的操作符 —— if-else。如果括号里的条件为真,它就执行一段代码,否则就执行另一段。

为了方便处理那些只能为真或假的表达式,C# 专门加了个类型 —— bool。它最大的特点就是,这种类型的变量只能有两个值:true)和 false)。

你不能给 bool 类型的变量赋别的值,编译器会直接报错。

举几个 bool 类型变量的例子:

bool isAdult = true;
bool hasMoney = false;
bool 类型变量的声明例子

bool 类型的变量就俩值 —— true(真)和 false(假)。就这样!跟单元测试差不多 —— 要么“通过”,要么“挂了”(哈哈)。

2. 比较操作

那为啥要有这么原始的类型?bool 的真正威力在于我们可以写出各种 逻辑表达式。这些表达式通常用比较操作符搞出来。

操作符 作用 例子 结果
== 等于
a == b
truefalse
!= 不等于
a != b
truefalse
> 大于
a > b
truefalse
< 小于
a < b
truefalse
>= 大于等于
a >= b
truefalse
<= 小于等于
a <= b
truefalse

例子:

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 的结果是 truefalse,而 true < 65(类型不一样)根本不能比。在 C# 里就是这样。

3. 逻辑操作

在 C# 里你不能写 18 < age < 65 —— 语法不对,程序直接编译不过。

不过你可以这样写:


(18 < age)  (age < 65)
带两个条件的逻辑表达式(中文)

当然, 这里其实要用别的逻辑操作符,下面我们就来聊聊这些操作符。

C# 里有三个逻辑操作符:AND(和)、OR(或)、NOT(非)。

好消息:用括号你可以写出多复杂的逻辑表达式都行。
坏消息:C# 的开发者没用 andornot 这些单词,而是用了 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 —— 只有成年又有票才行。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION