1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
|
<title>switch/case keywords</title>
<head>
<script language="JavaScript">
</script>
</head>
<body bgcolor="#ffffcc">
<hr>
<center>
<h1>The 'switch' and 'case' keywords</h1>
</center>
<hr>
<p>
The <b>switch-case</b> statement is a multi-way decision statement. Unlike the
multiple decision statement that can be created using
<a href=if.html>if-else</a>, the <b>switch</b>
statement evaluates the conditional
<a href="../CONCEPT/expressions.html">expression</a> and tests it against
numerous
<a href="../CONCEPT/constants.html">constant</a>
values. The branch corresponding to the value that the
expression matches is taken during execution.
<p>
The value of the expressions in a switch-case statement must be an ordinal
type i.e.
<a href="../CONCEPT/data_types.html">integer, char, short, long</a>,
etc. Float and double are not
allowed.
<p>
The syntax is :
<p>
<center>
<table bgcolor="ivory">
<tr>
<td>
<pre>
switch( expression )
{
case constant-expression1: statements1;
[case constant-expression2: statements2;]
[case constant-expression3: statements3;]
[default : statements4;]
}
</pre>
</td>
</tr>
</table>
</center>
<p>
The <b>case</b> statements and the <b>default</b> statement can occur in any
order in
the <b>switch</b> statement. The <b>default</b> clause is an optional clause
that is
matched if none of the constants in the <b>case</b> statements can be matched.
<p>
Consider the example shown below:
<p>
<center>
<table bgcolor="ivory">
<tr>
<td>
<pre>
switch( Grade )
{
case 'A' : printf( "Excellent" );
case 'B' : printf( "Good" );
case 'C' : printf( "OK" );
case 'D' : printf( "Mmmmm...." );
case 'F' : printf( "You must do better than this" );
default : printf( "What is your grade anyway?" );
}
</pre>
</td>
</tr>
</table>
</center>
<p>
Here, if the Grade is 'A' then the output will be
<p>
<center>
<table bgcolor="ivory">
<tr>
<td>
<pre>
Excellent
Good
OK
Mmmmm....
You must do better than this
What is your grade anyway?
</pre>
</td>
</tr>
</table>
</center>
<p>
This is because, in the 'C' <b>switch</b> statement, execution continues on into
the next case clause if it is not explicitly specified that the execution
should exit the <b>switch</b> statement. The correct statement would be:
<p>
<center>
<table bgcolor="ivory">
<tr>
<td>
<pre>
switch( Grade )
{
case 'A' : printf( "Excellent" );
break;
case 'B' : printf( "Good" );
break;
case 'C' : printf( "OK" );
break;
case 'D' : printf( "Mmmmm...." );
break;
case 'F' : printf( "You must do better than this" );
break;
default : printf( "What is your grade anyway?" );
break;
}
</pre>
</td>
</tr>
</table>
</center>
<p>
Although the <b>break</b> in the <b>default</b> clause (or in general, after
the last
clause) is not necessary, it is good programming practice to put it in
anyway.
<p>
An example where it is better to allow the execution to continue into the
next <b>case</b> statement:
<p>
<center>
<table bgcolor="ivory">
<tr>
<td>
<pre>
char Ch;
.
.
switch( Ch )
{
/* Handle lower-case characters */
case 'a' :
case 'b' :
.
.
.
case 'z' :
printf( "%c is a lower-case character.\n", Ch );
printf( "Its upper-case is %c.\n" toupper(Ch) );
break;
/* Handle upper-case characters */
case 'A' :
case 'B' :
.
.
.
case 'Z' :
printf( "%c is a upper-case character.\n", Ch );
printf( "Its lower-case is %c.\n" tolower(Ch) );
break;
/* Handle digits and special characters */
default :
printf( "%c is not in the alphabet.\n", Ch );
break;
}
.
.
</pre>
</td>
</tr>
</table>
</center>
<p>
<hr>
<h2>Example:</h2>
<img src="../../GRAPHICS/computer.gif" align=center>
<a href=../EXAMPLES/switch.c>Basic <b>switch</b> example.</a>
<br clear=left>
<hr>
<h2>See also:</h2>
<ul>
<li><a href=if.html>if keyword</a>.
</ul>
<p>
<hr>
<p>
<center>
<table border=2 width="80%" bgcolor="ivory">
<tr align=center>
<td width="25%">
<a href="../cref.html"> Top</a>
</td><td width="25%">
<a href="../master_index.html"> Master Index</a>
</td><td width="25%">
<a href="keywords.html"> Keywords</a>
</td><td width="25%">
<a href="../FUNCTIONS/funcref.htm"> Functions</a>
</td>
</tr>
</table>
</center>
<p>
<hr>
<address>Martin Leslie
</address><p>
</body>
</html>
|