设为首页 加入收藏

TOP

3.1.4 逻辑运算符和表达式(1)
2013-10-07 16:06:09 来源: 作者: 【 】 浏览:66
Tags:3.1.4 逻辑 运算 符和 表达式

3.1.4  逻辑运算符和表达式(1)

如前所述,当有两个或更多相关条件时,使用if语句会比较麻烦。在用if语句查找coffee和donuts时,我们已经发挥出了自己的聪明才智,但是,实际上我们可能想要测试更为复杂的条件。

逻辑运算符提供了既简洁又方便的解决方案。使用逻辑运算符,可以将一系列比较组合成一个逻辑表达式。因此,只要判断问题最终归结为在真假两种可能性之间选择,则无论条件集多么复杂,最终需要的都只是一条if语句。

逻辑运算符只有3个:

&&
逻辑与
||
逻辑或
!
逻辑非


1. 逻辑与

如果两个条件必须都是true时结果才为真,则可以使用"与(AND)"运算符&&。当两个操作数的值都是true时,&&运算符的结果才是true,否则结果是false。

当测试某个字符以确定其是否为大写字母时,可以使用&&运算符,被测试的数值必须既大于等于'A',又小于等于'Z'。这两个条件必须都返回true,才能确定被测试的字符是大写字母。

如前所述,用逻辑运算符组合起来的条件可能返回数值。记住,这种情况下非零值被强制转换为bool值true,而零值被强制转换为false。

还以在char型的变量letter中存储数值为例,可以用仅包括一个if和&&运算符的表达式来代替原来使用了两个if语句的测试条件。

  1. if((letter >= 'A') && (letter <= 'Z'))  
  2. cout << "This is a capital letter."; 

if条件表达式内的圆括号确保比较操作首先执行,这样会使语句更清楚。输出语句仅当&&运算符组合的两个条件都为true时才执行。

如果&&运算符左边的操作数是false,则不再对右边的操作数求值。当右边的操作数是一个会改变某些东西的表达式,如涉及++或--运算符的表达式时,这一特点就变得非常有意义。例如,在表达式x > =5 && ++n < 10中,如果x小于等于5,则n将不递增。

2. 逻辑或

如果希望两个条件之一或全部为真时结果为true,则应该使用"或(OR)"运算符 ||。例如,只有年收入至少为100 000美元,或者有1 000 000美元现金,银行才认为我们有资格申请贷款。下面的if语句可以测试这个条件。

  1. if((income >= 100000.00) || (capital >= 1000000.00))  
  2. cout << "How much would you like to borrow, Sir (grovel, grovel) "; 

当这两个条件中的一个或两个为true时,才会显示这条响应消息。只有当两个操作数的值都是false时,|| 运算符的结果才是false。

如果 || 运算符左边的操作数是true,则不再对右边的操作数求值。例如,在表达式x > =5 || ++n < 10中,如果x大于等于5,则变量n将不递增。

3. 逻辑非

第三个逻辑运算符 ! 将某个bool类型操作数的值取反。因此,如果变量test的值为true,则 !test为false;如果test为false,则 !test为true。以一个简单的表达式为例,如果x的值是10,则下面的表达式

  1. !(x > 5) 

为false,因为x > 5 为true。

还可以在Charles Dickens特别喜爱的一个表达式中应用 ! 运算符:

  1. !(income > expenditure) 

如果该表达式为true,则悲惨的生活至少从银行开始拒付支票那一刻起就降临了。

最后,可以对其他基本数据类型应用 ! 运算符。假设变量rate是float类型,值为3.2。如果想通过测试来证明rate的值不是零,则可以使用下面的表达式:

  1. !(rate) 

值3.2是非零值,因此转换为bool值true,这样该表达式的结果就是false。

试一试:组合逻辑运算符

只要认为合适,就可以任意地组合条件表达式和逻辑运算符。例如,可以仅仅使用一个if语句就构造出测试某个变量是否包含某个字母的条件。下面将其写成一个可运行的示例:

  1. // Ex3_03.cpp  
  2. // Testing for a letter using logical operators  
  3. #include <iostream> 
  4. using std::cin;  
  5. using std::cout;  
  6. using std::endl;  
  7. int main()  
  8. {  
  9. char letter(0);                                                                                                                     // Store input in here  
  10. cout << endl 
  11. << "Enter a character: ";  
  12. cin >> letter;  
  13. if(((letter >= 'A') & & (letter <= 'Z')) ||  
  14. ((letter >= 'a') & & (letter <= 'z')))                              // Test for alphabetic  
  15. cout << endl 
  16. << "You entered a letter." << endl;  
  17. else  
  18. cout << endl 
  19. << "You didn't enter a letter." << endl;  
  20. return 0;  
  21. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.1.3 嵌套的if-else语句 下一篇3.1.4 逻辑运算符和表达式(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)