逻辑运算符有短路行为

This commit is contained in:
custa 2016-08-10 23:24:45 +08:00
parent 22f1a8a202
commit 6bd4cf4ae5

View File

@ -2,7 +2,7 @@
一个布尔类型的值只有两种true和false。if和for语句的条件部分都是布尔类型的值并且==和<等比较操作也会产生布尔型的值一元操作符`!`对应逻辑非操作因此`!true`的值为`false`更罗嗦的说法是`(!true==false)==true`虽然表达方式不一样不过我们一般会采用简洁的布尔表达式就像用x来表示`x==true`。 一个布尔类型的值只有两种true和false。if和for语句的条件部分都是布尔类型的值并且==和<等比较操作也会产生布尔型的值一元操作符`!`对应逻辑非操作因此`!true`的值为`false`更罗嗦的说法是`(!true==false)==true`虽然表达方式不一样不过我们一般会采用简洁的布尔表达式就像用x来表示`x==true`。
布尔值可以和&&AND和||OR操作符结合并且可能会有短路行为:如果运算符左边值已经可以确定整个布尔表达式的值,那么运算符右边的值将不在被求值,因此下面的表达式总是安全的: 布尔值可以和&&AND和||OR操作符结合并且有短路行为如果运算符左边值已经可以确定整个布尔表达式的值那么运算符右边的值将不在被求值因此下面的表达式总是安全的
```Go ```Go
s != "" && s[0] == 'x' s != "" && s[0] == 'x'
@ -47,6 +47,3 @@ func btoi(b bool) int {
// itob reports whether i is non-zero. // itob reports whether i is non-zero.
func itob(i int) bool { return i != 0 } func itob(i int) bool { return i != 0 }
``` ```