summaryrefslogtreecommitdiff
path: root/reference/C/SYNTAX/switch.html
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/SYNTAX/switch.html')
-rw-r--r--reference/C/SYNTAX/switch.html233
1 files changed, 233 insertions, 0 deletions
diff --git a/reference/C/SYNTAX/switch.html b/reference/C/SYNTAX/switch.html
new file mode 100644
index 0000000..7fb870f
--- /dev/null
+++ b/reference/C/SYNTAX/switch.html
@@ -0,0 +1,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>