
2.5.2 布尔逻辑和布尔操作符
由于计算机使用二进制系统(只有0、1),所以所有计算机程序必须以某种方式利用这个系统执行极其复杂的任务。在计算机中,通常0等同于false,而1等同于true。布尔逻辑是代数学的子集,用于创建true/false语句。因此,只返回true或false的操作符(类似AND、OR和NOT操作符)称为布尔操作符。通过将多个二进制(或布尔)语句连接在一起,计算机程序可以执行复杂的计算。
例2.19说明这些操作符如何工作。
例2.19 使用逻辑操作符 对于这个例子,假定num=1,判断以下每个表达式是true还是false?
a)((2*num)+1==3)&&(num>2)
b)((2*num)+1==3)||(num>2)
c)!(2*num==0)
·在a)中,因为(2*1+1)与3相同,所以第一个简单条件是true,而第二个条件是false(num不大于2)。因此,这个复合的AND条件是false。
·在b)中,其结果为true,即使如a)所示的一个条件是true,而另一个false。然而,OR操作符在对整个表达式求值时,只要发现两个条件之一为true就可以返回true。
·在c)中,由于2*num=2,即2*num不等于0,所以条件2*num=0是false,而整个条件是true。
例2.20说明这些操作符如何工作。
例2.20 再次使用逻辑操作符 对于这个例子,假定N=6、P=4和S=18,判断以下每个表达式是true还是false?
a)(N*P)>S&&S>(P+N)
b)(S/N!=3)||(N*P<S)
c)!(2*N+P==S-2)
·在a)中,两个简单条件是true(6*4大于18,而18大于6+4)。当两个条件是true时,AND操作符求值为true。
·在b)中,结果是false,因为两个简单条件都是false(18/6等于3,因此说它不等于3是false,而且6*4不小于18)。对于OR操作符,当两个条件之一是true时求值为true,而当两个条件都是false时求值为false。
·在c)中,由于2*6+4=16和18-2=16,所以表达式2*N+P==S-2是true。NOT操作符对结果取反,因此NOT true是false。也就是说这个表达式!(2*N+P==S-2),值为false。