Die Addition »…+…« in C
Einführendes Beispiel
Im folgenden Beispielprogramm wird der Ausdruck »1 + 1« ausgewertet, der die Summe von »[1]« mit »[1]« notiert. Es ergibt sich der erwartete Wert »[2]«.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 1 + 1 ); }stdout
2
Syntax
Die Addition wird mit dem Pluszeichen »+« geschrieben. Ist A ein Additivausdruck und a ein Multiplikativausdruck, so ist A +a wieder ein Additivausdruck, die Summe von A und a. Dabei wird A auch Augend und a Addend genannt.
- Neue, erweiterte Syntax (Syntaxdiagramm)
Primaerausdruck
.-. .----------. .-.
--->.--->( ( )--->| Ausdruck |--->( ) )--->.--->
| '-' '----------' '-' ^
| .----------. |
'------------>| Literal |-------------'
'----------'Vorzeichenausdruck
.--------------------.
---.------------>| Primaerausdruck |----.---->
| '--------------------' ^
| .-. .--------------------. |
'--->( - )--->| Vorzeichenausdruck |----'
| '-' '--------------------' |
| .-. .--------------------. |
'--->( + )--->| Vorzeichenausdruck |----'
'-' '--------------------'Multiplikativausdruck
.--------------------.
---.--->| Vorzeichenausdruck |--------------------------------------.--->
| '--------------------' ^
| .--------------------. .-. .--------------------. |
'--->| Vorzeichenausdruck |--->( * )--->| Vorzeichenausdruck |---'
| '--------------------' '-' '--------------------' |
| .--------------------. .-. .--------------------. |
'--->| Vorzeichenausdruck |--->( / )--->| Vorzeichenausdruck |---'
'--------------------' '-' '--------------------'Additivausdruck
.-----------------------.
---.--->| Multiplikativausdruck |-----------------------------------------.--->
| '-----------------------' ^
| .-----------------------. .-. .-----------------------. |
'--->| Additivausdruck |--->( + )--->| Multiplikativausdruck |---'
'-----------------------' '-' '-----------------------'Ausdruck
.-----------------.
--->| Additivausdruck |--->
'-----------------'- N2176 6.5.6 Additive operators
- Syntax
1 additive-expression:
multiplicative-expression
additive-expression + multiplicative-expression
additive-expression - multiplicative-expression
Typanforderungen
Bei der Addition können beide Operanden einen numerischen Typ (»int« oder »double«) haben.
Typ
Ist der Typ des einen Operanden »double«, so wird der Wert des anderen Operand nach »double« gewandelt und der Typ des gesamten Ausdrucks hat den Typ »double«. Sonst hat der gesamte Ausdruck den Typ »int«.
- double + … → double
… + double → double
int + int → int
Wert
Bei der Auswertung einer Addition werden beide Operanden ausgewertet. Der Wert eines Additionsausdrucks mit numerischen Operanden ist die Summe dieser Operanden.
Die Typangleichung erfolgt so wie bei der Division, nur daß es hier weniger Probleme mit Nachkommastellen gibt, weil die Addition zweier ganzzahliger Werte auch in der Mathematik keine Nachkommastellen ergibt.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 1 + 1 ); }stdout
2
main.c
#include <stdio.h>
int main( void )
{ printf
( "%g\n", 1 + 1. ); }stdout
2
main.c
#include <stdio.h>
int main( void )
{ printf
( "%g\n", 1. + 1 ); }stdout
2
main.c
#include <stdio.h>
int main( void )
{ printf
( "%g\n", 1. + 1. ); }stdout
2
Die Abstraktion des unsichtbaren Implementation (black box )
Der Operator »+« wird in der Regel nur dadurch beschrieben, welches Ergebnis er liefert. Die Technik, wie der Operator »+« es erreicht, das richtige Ergebnis zu „finden“ wird verborgen. Dadurch wird der Verwender dieses Operators davon entlastet, sich über die Details der Umsetzung Gedanken machen zu müssen.
Man kann dies mit einer Maschine wie beispielsweise einem Fahrstuhl vergleichen: Der Bediener muß nur wissen, welche Wirkung die einzelnen Knöpfe haben (er muß also nur die Oberfläche zur Bedienung kennen), aber nicht, wie die Technik das im einzelnen realisiert. Das Innere der Maschine ist für den Benutzer nicht sichtbar (abstrahiert).
Die Umsetzung von Funktionen wird Implementation (hier wäre dies also die „Implementation der Addition“) genannt. Die Implementation wird in der Programmierung oft verborgen.
Diese Abstraktion der „unsichtbaren Implementation“ (black box ) ist eine der wichtigsten Techniken, die in der Programmierung zur Beherrschung der Komplexität großer Programm eingesetzt wird.
Übungsfragen
? Ausdrücke
Welcher der folgenden Ausdrücke hat denselben Wert wie »1 / 2+3«?
- »1/( 2+3 )« Anton
- »( 1/2 )+ 3« Berta
? Ausdrücke
Welche Werte haben die folgenden Ausdrücke jeweils?
- A »1/2 + 1/2«
- B »1/2. + 1/2«
Übungsaufgaben
/ Terme
Die in der Mathematik vorkommenden Schreibweisen für Werte werden Terme genannt. In C verwendet man keine Terme. Die Ausdrücke von C haben aber Ähnlichkeit mit Termen. Viele Terme lassen sich auch als Ausdruck schreiben und umgekehrt.
Schreiben Sie möglichst kurze Ausdrücke für die folgenden Terme, ohne vorher irgendwelche Teile der Terme im Kopf auszurechnen. Die Werte der Ausdrücke sollten den mathematischen Werten der vorgegebenen Terme möglichst nahe kommen, also den Werten, die man in der Grundschule als Werte der Terme ansehen würde.
- Term (Ein Halb plus drei Viertel, erwartete Ausgabe: ungefähr »1.25«)
1 3
--- + ---
2 4- Term (Drei plus Vier im Zähler und Fünf plus Sechs im Nenner, erwartete Ausgabe: ungefähr »0.636364«)
3 + 4
---------
5 + 6
Falls beim Lösen der zweiten Übungsaufgabe die Lösung der ersten Übungsaufgabe noch aufbewahrt werden soll, so ist es am besten, die Lösung der ersten Übungsaufgabe in eine extra Textdatei zu kopieren, damit die Lösung der zweiten Übungsaufgabe übersichtlich bleibt. Es spricht aber auch nichts dagegen, wenn beim Lösen der zweiten Übungsaufgabe die Lösung der ersten Übungsaufgabe wieder verloren geht.