Mikroelektronika MIKROE-738 Datenbogen

Seite von 682
mikroC PRO for PIC32
MikroElektronika
251
Note:  
#if 
and
 #else
 preprocessor statements (directives) look similar to
 if
 and 
else
 statements, but have  
 
 
very different effects. They control which source file lines are compiled and which are ignored.
Switch Statement
The 
switch
 statement is used to pass control to a specific program branch, based on a certain condition. The syntax 
of the 
switch
 statement is:
switch (expression) {
  case constant-expression_1 : statement_1;
    .
    .
    .
  case constant-expression_n : statement_n;
  [default : statement;]
}
First, the 
expression
 (condition) is evaluated. The 
switch
 statement then compares it to all available 
constant-
expressions
 following the keyword 
case
. If a match is found, 
switch
 passes control to that matching 
case
 causing 
the 
statement
 
following the match evaluates. Note that 
constant-expressions
 must evaluate to integer. It is not 
possible to have two same constant expressions evaluating to the same value.
Parentheses around 
expression
 are mandatory.
Upon finding a match, program flow continues normally: the following instructions will be executed in natural order 
regardless of the possible 
case
 label. If no 
case
 satisfies the condition, the 
default
 case evaluates (if the label 
default
 is specified).
For example, if a variable
 i
 has value between 1 and 3, the following switch would always return it as 4:
switch (i) {
  case 1: i++;
  case 2: i++;
  case 3: i++;
}
To avoid evaluating any other cases and relinquish control from 
switch
, each 
case
 should be terminated with break.
Here is a simple example with 
switch
. Suppose we have a variable 
phase
 with only 3 different states (0, 1, or 2) and a 
corresponding function (event) for each of these states. This is how we could switch the code to the appopriate routine:
switch (phase) {
  case 0: Lo();  break;
  case 1: Mid(); break;
  case 2: Hi();  break;
  default: Message(“Invalid state!”);
}