diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2008-01-27 11:37:44 +0100 |
---|---|---|
committer | Tobias Klauser <tklauser@xenon.tklauser.home> | 2008-01-27 11:37:44 +0100 |
commit | 7e0f021a9aec35fd8e6725e87e3313b101d26f5e (patch) | |
tree | b1cacc4b24393f517aeb4610e9e1021f954307a8 /reference/C/SYNTAX/switch.html |
Initial import (2.0.2-6)2.0.2-6
Diffstat (limited to 'reference/C/SYNTAX/switch.html')
-rw-r--r-- | reference/C/SYNTAX/switch.html | 233 |
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> |