|
|
|
|
|
|
|
|
| .. Tabelle der Rechenoperationen in C | ||
|
|
||
|
|
Operationen
und Relationen
In der
Mathematik beschreiben Operationen die Abläufe zur
Verbindung zweier Operanden, z.B.die Art und Weise, wie zwei
Zahlen zusammenzuzählen sind. Den Operationen stehen die
Relationen gegenüber. Diese fordern zur Bestimmung
von Beziehungen oder Abhängigkeiten zwischen den Operanden
auf. z.B. lässt sich mit ihnen klären ob zwei Zahlen
gleich gross oder kleiner bzw. grösser sind.
Die nachfolgenden Tabellen enthalten die Relationen und Operationen die in der Sprache C möglich sind. Binäre Operationen sind dabei solche, die zwei Zahlen benötigen, während unäre Operationen nur eine Zahl brauchen um wirksam zu werden. Zu beachten ist der in der Mathematik nicht vorzufindende Unterschied zwischen dem Zuweisungsoperator (=) und dem Vergleich auf Gleichheit (= =). |
|
|
|
|
|
|||||
|
|
|
|
|||||
|
|
|
= |
Zuweisungsoperator |
a = b+c die Summe von b+c wird a zugewiesen |
|
||
|
|
|
|
|
a = b = c der Inhalt von c wird b, der Inhalt von b wird a zugewiesen |
|
||
|
|
|
|
|
a = a+a der Inhalt von a wird zum Inhalt von a addiert und das Ergebnis in a gespeichert. Der vorherige Inhalt von a geht dabei verloren, er wurde überschrieben. |
|
||
|
|
|
|
|||||
|
|
|
|
|||||
|
|
1. Binär |
+ |
Addition |
a = a + b |
a + = b |
|
|
|
|
|
- |
Subtraktion |
a = a b |
a - = b |
|
|
|
|
|
* |
Multiplikation |
a = a * b |
a * = b |
|
|
|
|
|
/ |
Division 1) |
a = a / b |
a / = b |
|
|
|
|
|
% |
Modulo 2) |
a = a % b |
a % = b |
|
|
|
|
2. Unär |
+ |
Positives Vorzeichen |
|
|
||
|
|
|
- |
Negatives Vorzeichen |
Bildet das Zweierkomplement |
|
||
|
|
|
++ |
Increment (a=a+1) |
++a incrementiere a vor weiteren Operationen |
|
||
|
|
|
|
|
a++ incrementiere a nach vorhergehender Operation |
|
||
|
|
|
-- |
Decrement (a=a-1) |
--a decrementiere a vor weiteren Operationen |
|
||
|
|
|
|
|
a-- decrementiere a nach vorhergehender Operation |
|
||
|
|
|
|
|||||
|
|
|
|
|||||
|
|
1. Binär |
& |
bitweises UND |
a = a & b |
a & = b |
|
|
|
|
|
| |
bitweises ODER |
a = a | b |
a | = b |
|
|
|
|
|
^ |
bitweises XOR |
a = a ^ b |
a ^ = b |
|
|
|
|
|
<< |
Linkschieben |
a = a << b, a = a << 8 |
a << = b, a << = 8 |
|
|
|
|
|
>> |
Rechtsschieben |
a = a >> b, a = a >> 8 |
A >> = b, a >> = 8 |
|
|
|
|
2. Unär |
~ |
bitweise Negation NOT |
a = ~b +1 (Zweierkomplement) |
|
||
|
|
|
|
|||||
|
|
4. Logische Operatoren auf Variable |
|
|||||
|
|
1. Binär |
&& |
logisches UND |
a && b |
benutzt in Bedingungen if(..),while(..)usw. |
|
|
|
|
|
|| |
logisches ODER |
a || b |
jede Variable ungleich 0 ist log 1 |
|
|
|
|
|
! |
Logische Negation NOT |
!a |
log Wert der Variablen invertieren |
|
|
|
|
|
|
|||||
|
|
|
|
|||||
|
|
1. Binär |
> |
Größer als |
a > b |
log 1, wenn Inhalt a größer als b |
|
|
|
|
|
>= |
Größer oder gleich |
a >= b |
log 1, wenn Inhalt a größer od. gleich b |
|
|
|
|
|
== |
Gleich |
a == b |
log 1, wenn Inhalt a gleich b |
|
|
|
|
|
!= |
Ungleich |
a != b |
log 1, wenn Inhalt a ungleich b |
|
|
|
|
|
< |
Kleiner als |
a < b |
log 1, wenn Inhalt a kleiner b |
|
|
|
|
|
<= |
Kleiner, gleich |
a <= b |
log 1, wenn Inhalt a kleiner od. gleich b |
|
|
|
|
|
|
|||||
|
|
|
|
|||||
|
|
|
. |
VariablenName.Mitglied |
Untervariable einer Struktur benennen |
|
||
|
|
|
-> |
ZeigerName ->Mitglied |
Untervariable einer Struktur benennen, wenn die Struktur als Zeiger erklärt wurde. |
|
||
|
|
|
|
|||||
|
|
7. Operatoren auf Adressen |
|
|||||
|
|
|
&a |
Adresse von a |
Liefert die Adresse des Bytes, ab der die Variable a im Speicher beginnt |
|
||
|
|
|
*a |
das, wo a hinzeigt |
Liefert den Inhalt der Speicherzelle, deren Adresse in a steht |
|
||
|
|
|
|
|||||
|
|
8. Operatoren auf Variable und Zeiger |
|
|||||
|
|
|
(type)a |
Wandelt den Inhalt der Variablen a in das Format, das in den Klammern angegeben ist. Beispiel: char a = 55; double c; c = (double) a. Die 8Bit Binärzahl in a wird zu einer Fliesskommazahl gewandelt und in c abgelegt (Typecasting) |
|
|||
|
|
|
sizeof(type) |
Liefert die Anzahl der Bytes zurück, die ein Variablentyp benötigt. Beispiel: a = sizeof (int); a enthält nach dieser Zeile den Inhalt 2, weil die Größe von int 2 Bytes sind. |
|
|||
|
|
|
|
|
|
|
|
|
|
Vorrang der Operationen |
|
|
|
Wie man
aus der Mathematik weiß, gibt es Operationen welche ohne
die Benutzung von Klammern Vorrang vor anderen Operationen
besitzen. Ein bekannter Spruch lautet beispielsweise,
Multiplikation geht vor Addition. Andererseits gibt es
gleichrangige Operationen, so wie es bei der Addition und der
Subtraktion der Fall ist. Derartige Ausdrücke muss man stur
von links nach rechts berechnen.
Regelungen bezüglich der Rangfolge gibt es bei den Operationen und Relationen, die in der Computertechnik angewendet werden, auch. Nur ist ihre Anzahl umfassender als man es von der Schulmathematik her gewohnt ist. In der unteren Tabelle besitzen die Operationen und Relationen einer Zeile den gleichen Rang. Die Zeilen hingegen besitzen von oben nach unten gesehen einen abfallenden Rang. Operationen oder Relationen der oberen Zeilen werden also von einem Programm vor den Operationen ausgewertet die in einer der unteren Zeilen stehen. Will man dieser Rangfolge nicht zustimmen, so muss man wie in der Mathematik Klammern setzen, die oben links in der Tabelle stehend den absoluten Vorrang besitzen. Nebenbei, in der Mathematik werden Operationen grundsätzlich von links nach rechts ausgewertet. In der Datenverarbeitungstechnik gibt es auch Ausdrücke, die entgegengesetzt ausgewertet werden. Sie sind in der Tabelle ebenfalls aufgeführt. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1) Die Division ( / ) ist vom Typ der Operanden abhängig. Sind beide Operanden Ganzzahlentypen so wird nur der Vorkommaanteil der Division ohne vorherige Rundung berechnet und gespeichert .. also 11 / 4 = 2 |
|
|
|
2) Die Modulodivision ( % ) ist unter C auch bei Fließkommazahlen möglich. Sie liefert bei Ganzzahlen und bei Fließkommazahlen den Rest der Division .. also 11 % 4 = 3, denn 11: 4 = 2 Rest 3 |
|
|
|
|
|
.de