Die Subtraktion unter C# [] (Die Subtraktion unter C#), Lektion, Seite 723366
https://www.purl.org/stefan_ram/pub/subtraktion_csharp (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C#-Kurs

Die Subtraktion »…-…« in C♯ 

Einführendes Beispiel

In C♯  kann auch eine Differenz  in der gewohnten Schreibweise als Ausdruck verwendet werden.

Program.cs
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine
( 1 - 1 ); }}
global::System.Console.Out
0

Syntax

Das Zeichen »-« wird „Minus“ oder „Bindestrich“ genannt. Die Subtraktion wird mit dem Minus »-« geschrieben.

Neue, erweiterte Syntax
Ausdruck
.----------.
---.----------->| Literal |---------------------------.---->
| '----------' |
| .-. .----------. |
'--->( - )-->| Ausdruck |---------------------------'
| '-' '----------' |
| .-. .----------. |
'--->( + )-->| Ausdruck |---------------------------'
| '-' '----------' |
| .-. .----------. .-. |
'--->( ( )-->| Ausdruck |-->( ) )-------------------'
| '-' '----------' '-' |
| .----------. .-. .----------. |
'----------->| Ausdruck |-->( / )-->| Ausdruck |----'
| '----------' '-' '----------' |
| .----------. .-. .----------. |
'----------->| Ausdruck |-->( + )-->| Ausdruck |----'
| '----------' '-' '----------' |
| .----------. .-. .----------. |
'----------->| Ausdruck |-->( - )-->| Ausdruck |----'
'----------' '-' '----------'

Syntax, Typanforderungen, Typergebnisse, Assoziativität und Priorität sind bei diesem binären Operator wie bei der Addition, nur daß hier keine Zeichenketten erlaubt sind und man den linken Operanden als Minuenden  und den rechten als Subtrahenden  bezeichnet. Die Semantik (der Wert) ist hingegen die der Subtraktion (Differenz).

Assoziativität

Die Assoziativität kann man bei der Subtraktion deutlicher erkennen als bei der Addition, weil das Ergebnis einer Abfolge zweier Subtraktionen von der Art der Zusammenfassung von Operanden abhängt.

Program.cs
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine
( 8 - 2 - 3 ); }}
global::System.Console.Out
3
Operationen bei der Auswertung von »8 - 2 - 3«:
Erste Operation Berechnung der Differenz »8 - 2«, Ergebnis »6«.
_____
8 - 2 - 3 →
6 - 3
Zweite Operation Berechnung der Differenz »6 - 3«, Ergebnis »3«.
_____
6 - 3 →
3

Addition und Subtraktionen haben die gleiche Priorität. Daher wird bei einer Kombination beider Operatoren, in der sie einen Operanden teilen, ebenfalls gemäß der Assoziativität dieser beiden Operatoren von links nach rechts zusammengefaßt.

Program.cs
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine
( 8 - 4 + 4 ); }}
global::System.Console.Out
8
Operationen bei der Auswertung von »8 - 4 + 4«:
Erste Operation Berechnung der Differenz »8 - 4«, Ergebnis: »4«.
_____
8 - 4 + 4 →
4 + 4
Zweite Operation Berechnung der Summe »4 - 4«, Ergebnis: »4«.
_____
4 + 4 →
8

●   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.

Program.cs
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine
( 0 - 0.00 ); }}
global::System.Console.Out
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«.

Literale mit einem Operatorzeichen

Das Literal »2e+03« ist keine Summe, sondern bedeutet „2·10³“. Um Summen deutlich von solchen Literalen mit einem inneren Pluszeichen oder einem inneren Minuszeichen zu unterscheiden, bietet es sich an, die binären Operatoren »+« und »-« mit einem umgebenden Leerzeichen zu verwenden.

Beispiele

●   Punktnumeralia

Es wird noch einmal deutlich, daß verschiedene  Literale denselben  Wert haben können, also sind Literale nicht dasselbe wie ihre Werte.

Program.cs
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine
( 2.0 - 1.9999999999999999 ); }}
global::System.Console.Out
0

Das folgende Programm zeigt, daß die Verwendung des Typs »decimal« es erlaubt, in manchen Fällen noch die mathematisch korrekten Ergebnisse zu erhalten.

Program.cs
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine
( 2.0m - 1.9999999999999999m ); }}
global::System.Console.Out
0.0000000000000001

Jedoch zeigt das folgende Programm, daß auch der Typ »decimal« nur eine beschränkte Genauigkeit hat.

Program.cs
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine
( 2.0m - 1.99999999999999999999999999999m ); }}
global::System.Console.Out
0.0000000000000000000000000000

Übungsfragen

?   Operatoren

Ist der folgende Quelltext ein Ausdruck?

Welches der Minuszeichen »-« steht in dem folgenden Quelltext für einen unären Operator und welches für einen binären?

Quelltext
- 2 - - - 2

?   Operanden

Wie viele Operanden hat der Ausdruck »8 - 2«?

Nennen Sie die Operanden im Ausdruck »8 - 2«!

Wie viele Operanden im Ausdruck »8 - 2« sind positiv?

Wie viele Operanden hat der Operator »-« im Ausdruck »8 - 2 / 3«?

Zusatzaufgaben *

/   Zusatzaufgabe *

Die Kreiszahl ‹ π › ist gleich ‹ 4·( 1 − 1/3 + 1/5 − 1/7 + 1/9 − 1/11 + 1/13 − 1/15 + … ) ›.

Schreiben Sie ein Programm, welches unter Verwendung dieser Gleichheit eine möglichst gute Näherung für ‹ π › ausgibt.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723366 stefan_ram:723366 Die Subtraktion unter C# Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723366, slrprddef723366, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/subtraktion_csharp