跳到主要内容
版本:master

二元逻辑运算表达式

语法

描述

二元逻辑运算表达式用于对两个子表达式的值进行逻辑与(&&)或逻辑或(||),例如关键字、运算符、标点符号等:

| || 运算真值表 | true | false | | --- | --- | --- | | true | true | true | | false | true | false |

&& 运算真值表truefalse
truetruefalse
falsefalsefalse

在执行逻辑运算时,如果(左或者右)操作数不是 bool 类型,先按照 隐式类型转换 规则将其转换为 bool 类型,然后再进行逻辑运算。

逻辑与运算符 && 的优先级高于逻辑或运算符 ||,并且两者都是左结合的。

逻辑运算符具有短路求值的特性,即:

  • 对于逻辑与运算 &&,如果左操作数的值为 false,则不会计算右操作数,整个表达式的值为 false
  • 对于逻辑或运算 ||,如果左操作数的值为 true,则不会计算右操作数,整个表达式的值为 true

为了满足逻辑运算符的短路求值特性,逻辑运算表达式是 定序 的。 GS 保证对表达式左操作数优先于右操作数求值。

示例

bool a = false;
bool b = true;

bool c = a && (b = false); // b 不会被赋值,c 的值为 false
writeln(b); // 输出 true

b = false;
bool d = a || (b = true); // b 会被赋值为 true
writeln(b); // 输出 true

int i = 0;
bool result = (i > 0) && ((10 / i) > 1);
// 不会发生除以零错误,result 的值为 false

int j = 0;
bool result = (j == 0) || ((10 / j) > 1);
// 不会发生除以零错误,result 的值为 true