switch 多重选择控制简析
C 语言亦有提供多重选择的控制结构,使用关键字 switch 、 case 、 default 的陈述,形式如下

简单来说, switch 后头接一小括弧,小括弧内为一常数运算式,计算出常数值若与其后 case 的位标相符,就会执行该 case 的陈述。 case 的位标也可以是常数运算式,不过通常直接用常数值。
如下列程序,假设有一位元编码储存在数组 data[] 之中,程序累计 0 与 1 各自出现的数目
- #include <stdio.h>
- int main(void)
- {
- int data[] = {1, 0 ,0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1};
- int oneCount = 0;
- int zeroCount = 0;
- int i;
- for (i = 0; i <= 16; i++) {
- switch (data[i]) {
- case 0:
- zeroCount++;
- break;
- case 1:
- oneCount++;
- break;
- }
- }
- printf("文件中有%d个0,%d个1....\n", zeroCount, oneCount);
- return 0;
- }
程序编译后的执行结果如下:

第 11 行 switch (data[i]) {
data[i] 会取得该数组的第 i 个元素值,此为常数运算式。
由于情况只有 0 与 1 ,因此上列程序只用 0 与 1 两个位标。另外第 14 及第 18 行都有
- break;
- break;
关键字 break 是用来暂时中断程序的执行,放在循环内遇到 break 就会跳出循环,而在 switch 里头的位标后面则是可以不让程序继续往下检查其他的位标,因为检查到相符的位标,程序即可暂停,若是没有用 break ,程序会持续执行到右大括弧 } ,也就是 switch 陈述结束的地方,这样容易增加额外的程序执行时间。
以下程序计算字符串中母音字母出现的次数,若非母音字母则用 default 位标执行另外的计算
- #include <stdio.h>
- int main(void)
- {
- char saying[] = "Never put off till tomorrow what you can do today.";
- int aV, eV, iV, oV, uV, other, i;
- aV = eV = iV = oV = uV = other = i = 0;
- while (saying[i] != '\0') {
- switch(saying[i]) {
- case 'A':
- case 'a':
- aV++;
- break;
- case 'E':
- case 'e':
- eV++;
- break;
- case 'I':
- case 'i':
- iV++;
- break;
- case 'O':
- case 'o':
- oV++;
- break;
- case 'U':
- case 'u':
- uV++;
- break;
- default:
- other++;
- break;
- }
- i++;
- }
- printf("a: %d, e: %d, i: %d, o: %d, u: %d, other: %d\n", aV, eV, iV, oV, uV, other);
- return 0;
- }
程序执行结果如下:

- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
