User manual

97 C-Control Pro Mega Series
© 2008 Conrad Electronic
// lokale u ist zugreifbar
// x,y nicht zugreifbar da lokal zu Funktion func1
}
Globale Variablen haben einen definierten Speicherbereich, der während des gesamten
Programmlaufs zur Verfügung steht.
Bei Programmstart werden die globalen Variablen mit null initialisiert.
Lokale Variablen werden, während der Berechnung einer Funktion, auf dem Stack angelegt. Das
heißt, lokale Variablen existieren im Speicher nur während des Zeitraums, in der die Funktion
abgearbeitet wird.
Wird bei lokalen Variablen der gleiche Name gewählt wie bei einer globalen Variable, so verdeckt die
lokale Variable die globale Variable. Solange sich das Programm dann in der Funktion aufhält wo die
namensgleiche lokale Variable definiert wurde, ist die globale Variable nicht ansprechbar.
Static Variablen
Man kann bei lokalen Variablen die Eigenschaft static vor den Datentyp setzen.
void func1(void)
{
static int a;
}
Static Variablen behalten im Gegensatz zu normalen lokalen Variablen ihren Wert auch, wenn die
Funktion verlassen wird. Bei einem weiteren Aufruf der Funktion hat die statische Variable den
gleichen Inhalt wie beim Verlassen der Funktion. Damit der Inhalt einer static Variable bei dem
ersten Zugriff definiert ist, werden statische Variablen wie globale auch bei Programmstart mit null
initialisiert.
5.2.5 Operatoren
Prioritäten von Operatoren
Operatoren teilen arithmetische Ausdrücke in Teilausdrücke. Die Operatoren werden dann in der
Reihenfolge ihrer Priorität (Präzedenz) ausgewertet. Ausdrücke mit Operatoren von gleicher
Präzedenz werden von links nach rechts berechnet. Beispiel:
i= 2+3*4-5; // Ergebnis 9 => erst 3*4, dann +2 danach -5
Mann kann die Reihenfolge der Abarbeitung beinflußen, in dem man Klammern setzt. Klammern
haben die größte Priorität. Möchte man das letzte Beispiel strikt von links nach rechts auswerten:
i= (2+3)*4-5; // Ergebnis 15 => erst 2+3, dann *4, danach -5
Eine Aufstellung der Prioritäten findet sich in der Präzedenz Tabelle.