codecamp

C++ switch语句

谈到枚举类型就不得不提switch语句,因为它们经常一起出现。switch语句是表示一组条件选择的另一种方式,而且语法上更漂亮,往往执行上也更有效率。switch语句看起来是这个样子的:

switch (symbol) {
case ’+’:
  perform_addition ();
  break;
case ’*’:
  perform_multiplication ();
  break;
default:
  cout << "I only know how to perform addition and multiplication" << endl;
  break;
}

switch语句与下面一组条件语句等价:

if (symbol == ’+’) {
  perform_addition ();
} else if (symbol == ’*’) {
  perform_multiplication ();
} else {
  cout << "I only know how to perform addition and multiplication" << endl;
}

switch语句每个分支中的break是必须的,否则执行流会贯穿到下一个case条件。如果没有break语句,symbol为 ‘+’时,程序会先执行加法,然后执行乘法,最后打印错误信息。这个特性偶尔也用得到,不过大多数情况下,当程序员忘记break时,这是错误之源。

switch语句可以使用整型数、字符型和枚举类型。比如,可以这样把Suit变量值转换为相应的字符串:

switch (suit) {
case CLUBS: return "Clubs";
case DIAMONDS: return "Diamonds";
case HEARTS: return "Hearts";
case SPADES: return "Spades";
default: return "Not a valid suit";
}

这种情况并不需要break语句,因为return会使函数的执行流程返回到调用处,不会贯穿到下一个case条件。

一般,在每个switch语句中都包含一个default条件——用以处理错误和意外值——是个好的编程风格。

C++ 枚举类型
C++ 牌堆
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }