设为首页 加入收藏

TOP

3.1.6 switch语句(2)
2013-10-07 16:05:58 来源: 作者: 【 】 浏览:66
Tags:3.1.6 switch 语句

3.1.6  switch语句(2)

由于count变量可能未在switch块中初始化,因此会得到下面的错误消息:

  1. error C2360: initialization of 'count' is skipped by 'case' label 

可以将前面这段代码修改为:

  1. switch(choice)  
  2. {  
  3. case 1:  
  4. {  
  5. int count = 2;  
  6. cout << "Boil " << count 
  7. << " eggs." << endl;  
  8. // Code to do something with count...  
  9. break;  
  10. }  
  11. default:  
  12. cout << endl << "You entered a wrong number, try raw eggs." << endl;  
  13. break;  
  14. }  

如果choice的值与指定的任何Case值都不符合,则执行default标签后面的语句。Default Case不是必需的。在缺少该Case的情况下,如果测试表达式的值与任何case都不符合,则退出switch语句,程序继续执行switch后面的语句。

试一试:共享某种case

switch语句中的每个case表达式都必须是可以在编译期间计算的常量表达式,且必须是互不相同的整数值。任何两个case常量都不能相同,原因是编译器将无法知道应该执行哪条case语句,但是不同的case不一定要采取不同的动作。如下所示,若干case可以共享相同的动作。

  1. // Ex3_06.cpp  
  2. // Multiple case actions  
  3. #include <iostream> 
  4. using std::cin;  
  5. using std::cout;  
  6. using std::endl;  
  7. int main()  
  8. {  
  9. char letter(0);  
  10. cout << endl 
  11. << "Enter a small letter: ";  
  12. cin >> letter;  
  13. switch(letter*(letter >= 'a' & & letter <= 'z'))  
  14. {  
  15. case 'a': case 'e': case 'i': case 'o': case 'u':  
  16. cout << endl << "You entered a vowel.";  
  17. break;  
  18. case 0:  
  19. cout << endl << "That is not a small letter.";  
  20. break;  
  21. default: cout << endl << "You entered a consonant.";  
  22. }  
  23. cout << endl;  
  24. return 0;  
  25. }  

示例说明

在本示例中,switch语句中的表达式更为复杂。如果输入的字符不是小写字母,则表达式
 

  1. (letter >= 'a' && letter <= 'z') 

结果为false;否则为true。因为letter要乘以该表达式的值,所以该逻辑表达式的值被转换为整数。如果是false,则转换为0;如果是true,则转换为1。因此,如果输入的不是小写字母,则switch表达式的值为0;如果是小写字母,则该表达式的值就是letter的值。只要letter中存储的字符代码不是小写字母,程序就执行case 0后面的语句。

如果输入的是小写字母,则switch表达式的值与letter的值相同。因此,对于所有对应元音的值来说,输出语句紧随着把元音作为值的case标签的序列执行。无论输入的是哪个元音,执行的都是同一条语句,因为选中这些case标签中的任何一个,都要执行后续的语句,直至遇到break语句为止。我们看到,在要执行的语句之前接连写出各个case标签,就可以为多种不同的case采取相同的动作。如果输入的小写字母是辅音,则执行case标签default后面的语句。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.1.6 switch语句(1) 下一篇3.1.7 无条件转移

评论

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

·用 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)