Die Subtraktion »…-…« in C
Einführendes Beispiel
Das Zeichen »-« wird „Minus“ oder „Bindestrich“ genannt. Die Subtraktion wird mit dem Minus »-« geschrieben.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 2 - 3 ); }- Protokoll
-1
Syntax
- Syntax
Additivausdruck
.-----------------------. .-. .-----------------------.
--->| Additivausdruck |--->( - )--->| Multiplikativausdruck |--->
'-----------------------' '-' '-----------------------'
Syntax, Typanforderungen, Typergebnisse, Assoziativität und Priorität sind bei diesem binären Operator wie bei der Addition, nur daß man den linken Operanden als Minuenden und den rechten als Subtrahenden bezeichnet. Die Semantik (der Wert) ist hingegen die der Subtraktion (Differenz).
- Neue, erweiterte Syntax (Syntaxdiagramm)
Primaerausdruck
.-. .----------. .-.
--->.--->( ( )--->| Ausdruck |--->( ) )--->.--->
| '-' '----------' '-' ^
| .----------. |
'------------>| Literal |-------------'
'----------'Vorzeichenausdruck
.--------------------.
---.------------>| Primaerausdruck |----.---->
| '--------------------' ^
| .-. .--------------------. |
'--->( - )--->| Vorzeichenausdruck |----'
| '-' '--------------------' |
| .-. .--------------------. |
'--->( + )--->| Vorzeichenausdruck |----'
'-' '--------------------'Multiplikativausdruck
.--------------------.
---.--->| Vorzeichenausdruck |--------------------------------------.--->
| '--------------------' ^
| .--------------------. .-. .--------------------. |
'--->| Vorzeichenausdruck |--->( * )--->| Vorzeichenausdruck |---'
| '--------------------' '-' '--------------------' |
| .--------------------. .-. .--------------------. |
'--->| Vorzeichenausdruck |--->( / )--->| Vorzeichenausdruck |---'
'--------------------' '-' '--------------------'Additivausdruck
.-----------------------.
---.--->| Multiplikativausdruck |-----------------------------------------.--->
| '-----------------------' ^
| .-----------------------. .-. .-----------------------. |
'--->| 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
2
Beispiele
● Gleichheitstest
Die Subtraktion kann gut verwendet werden, um zu erkennen, ob zwei Numeralia den gleichen Zahlenwert repräsentieren: Nur dann ist ihre Differenz gleich 0.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%g\n", 0 - 0.00 ); }stdout
0
Der Wert von »0« ist ja zunächst nicht gleich dem Wert von »0.00«, da beide Werte sich schon im Typ unterscheiden. Da bei dieser Subtraktion der Typ der beiden Operanden jedoch nach »double« angeglichen wird, ergibt sich dann doch das Ergebnis »0.0«.
Der Wert »1.0000001« und der Wert »1.000000001« werden beide in der gleichen Weise ausgegeben.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%g\n", 1.0000001 ); }stdout
1
main.c
#include <stdio.h>
int main( void )
{ printf
( "%g\n", 1.000000001 ); }stdout
1
Durch Berechnung der Differenz von »1.0000001« und »1.000000001« wird aber ein Unterschied sichtbar.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%g\n", 1.0000001 - 1.000000001 ); }stdout
9.9e-008
● Punktnumeralia
Es wird noch einmal deutlich, daß verschiedene Literale denselben Wert haben können, also sind Literale nicht dasselbe wie ihre Werte.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%g\n", 2.0 - 1.9999999999999999 ); }stdout
0
Übungsfragen
? Operanden
Wie viele Operanden im Ausdruck »8 - 2« sind positiv?
- A: keiner.
- B: einer.
- C: zwei.
- D: drei.
Wie viele Operanden hat der Operator »-« im Ausdruck »8 - 2 * 3«?
- A: keinen.
- B: einen.
- C: zwei.
- D: drei.
Wie viele Operationen (Rechenschritte) werden bei der Auswertung des Ausdrucks »8 - 2 * 3« ausgeführt?
- A: keine.
- B: eine.
- C: zwei.
- D: drei.