二元逻辑运算表达式
语法
描述
二元逻辑运算表达式用于对两个子表达式的值进行逻辑与(&&)或逻辑或(||),例如关键字、运算符、标点符号等:
| || 运算真值表 | true | false |
| --- | --- | --- |
| true | true | true |
| false | true | false |
&& 运算真值表 | true | false |
|---|---|---|
true | true | false |
false | false | false |
在执行逻辑运算时,如果(左或者右)操作数不是 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