跳转到内容

Delphi 编程/布尔表达式

来自维基教科书,开放的书籍,开放的世界

布尔表达式返回一个布尔值,它可以被直接使用或存储在一个布尔变量中。表达式是在一个运算符 (and, or, xor, <, >...) 上创建的,它需要给定数量的操作数,操作数可以是硬编码的值、变量甚至另一个表达式。布尔表达式可以使用布尔值或数值

program Go_to_the_playground;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  age:integer;

begin
  WriteLn ('How old are you?');
  ReadLn (age);
  Write ('Allowed to play: ');
  WriteLn ((3 < age) and (age > 12)); // Display "Allowed to play: True" or "Allowed to play: False"
end.

逻辑运算符

[编辑 | 编辑源代码]

逻辑运算符允许处理和比较布尔值或二进制数据。如果您不熟悉这个概念,可以了解有关布尔代数的更多信息。

运算符“not”

[编辑 | 编辑源代码]

NOT 逻辑运算符在 Delphi 中写为 not。因此,要获取 Delphi 中值的相反值,我们写

var
  x, y: boolean;
begin
  x := true;
  y := not x; // y = false
end.

运算符“and”

[编辑 | 编辑源代码]

AND 逻辑运算符在 Delphi 中写为 and。它类似于 C 中的 &。因此,要在 Delphi 中对值进行按位与运算,我们写

var
  x, y, z: boolean;
begin
  x := true;
  y := false;
  z := y and x; // z = false
end.

运算符“or”

[编辑 | 编辑源代码]

OR 逻辑运算符在 Delphi 中写为 or。它类似于 C 中的 |。因此,要在 Delphi 中对值进行或运算,我们写

var
  x, y, z: boolean;
begin
  x := true;
  y := false;
  z := y or x; // z = true
end.

运算符“xor” (对称差,或排他)

[编辑 | 编辑源代码]

XOR 逻辑运算符在 Delphi 中写为 xor。因此,要在 Delphi 中对值进行异或运算,我们写

var
  x, y, z: boolean;
begin
  x := true;
  y := false;
  z := y xor x; // z = true
end.

比较运算符

[编辑 | 编辑源代码]

它们主要用于对数值进行逻辑测试。

等号“=”

[编辑 | 编辑源代码]

Delphi 等号比较符“= 允许验证左边的值是否严格等于右边的值。

它与对 XOR 逻辑运算符进行反转相同(即 NOT XOR)。以下是 (x = y) 运算的 = 比较符真值表

= (NOT XOR) y = true y = false
x = true true false
x = false false true

不等号“<>”

[编辑 | 编辑源代码]

Delphi 差分运算符 <> 允许验证左边的值是否严格不同于右边的值

var
  x, y: Integer;
  isDifferent: boolean;
begin
  x := 5;
  y := 10;
  isDifferent := (x <> y); // isDifferent = true
end.

比较符“<” (严格小于) 

[编辑 | 编辑源代码]

比较符“<” (严格小于) 允许验证左边的值是否严格小于右边的值。该运算符仅在数值严格小于右边的数值时返回 true。

比较符“<=” (小于) 

[编辑 | 编辑源代码]

比较符“<=” (小于) 允许验证左边的值是否小于右边的值。该运算符仅在数值小于右边的数值时返回 true。

比较符“>=” (大于) 

[编辑 | 编辑源代码]

比较符“>=” (大于) 允许验证左边的值是否大于右边的值。该运算符仅在数值大于右边的数值时返回 true。

比较符“>” (严格大于) 

[编辑 | 编辑源代码]

比较符“>” (严格大于) 允许验证左边的值是否严格大于右边的值。该运算符仅在数值严格大于右边的数值时返回 true。

表达式组合

[编辑 | 编辑源代码]

您可以基于布尔表达式而不是变量创建布尔表达式

var
  x, y, z: boolean;
  areAllEqual: boolean;
begin
  x := false;
  y := false;
  z := true;
  areAllEqual := ((x = y) and (x = z) and (y = z)); // areAllEqual = false
end.

基于布尔表达式的布尔表达式将使用嵌套表达式的返回值。嵌套表达式位于括号中。它们首先被评估。换句话说,如果您更改括号,表达式的评估方式将有所不同

var
  x, y, z: boolean;
  areAllEqual: boolean;
begin
  x := false;
  y := false;
  z := true;
  areAllEqual := ((x = y) and ((x = (z and y)) = z)); // areAllEqual = true
end.

因此请注意顺序。

华夏公益教科书