C ++ - Tutorial zum Umgang mit Floats und Ints

click fraud protection

Ein int ist eine ganze Zahl wie 47 ohne Dezimalpunkt. Sie können nicht 4,5 Babys haben oder 32,9 Mal schleifen. Sie können 25,76 $ haben, wenn Sie einen Float verwenden. Wenn Sie also Ihr Programm erstellen, müssen Sie entscheiden, welchen Typ Sie verwenden möchten.

Dies ist, was einige Skriptsprachen tun? Da Floats ineffizient sind, beanspruchen sie mehr Speicher und sind im Allgemeinen langsamer als Ints. Außerdem können Sie zwei Floats nicht einfach vergleichen, um festzustellen, ob sie wie Ints gleich sind.

Um Zahlen zu manipulieren, müssen Sie sie im Speicher speichern. Da der Wert leicht geändert werden kann, wird er als Variable bezeichnet.

Das Compiler Damit Ihr Programm gelesen und in Maschinencode konvertiert werden kann, muss bekannt sein, um welchen Typ es sich handelt, d. h. ob es sich um ein int oder ein float handelt. Bevor Ihr Programm eine Variable verwendet, müssen Sie dies tun erklären es.

Sie werden feststellen, dass die Zählervariable auf 0 gesetzt ist. Dies ist eine optionale Initialisierung. Es ist eine sehr gute Praxis, Variablen zu initialisieren. Wenn Sie sie nicht initialisieren und dann im Code verwenden, ohne einen Anfangswert festgelegt zu haben, beginnt die Variable mit einem zufälligen Wert, der Ihren Code möglicherweise "kaputt macht". Der Wert ist der Wert, der sich beim Laden des Programms im Speicher befand.

instagram viewer

Was ist die größte Zahl, die ein Int speichern kann?. Nun, es kommt auf die Art von an Zentralprozessor Es wird jedoch allgemein als 32 Bit akzeptiert. Da es fast so viele negative wie positive Werte enthalten kann, beträgt der Wertebereich +/- 2-32 zu 232 oder -2.147.483.648 bis +2.147.483.647.

Dies ist für ein signiertes int, aber es gibt auch ein ohne Vorzeichen int, das Null oder positiv hält. Es hat einen Bereich von 0 bis 4.294.967.295. Denk dran - Vorzeichenlose Ints benötigen kein Vorzeichen (wie + oder -1) vor ihnen, da sie immer positiv oder 0 sind.

Es gibt einen kürzeren int-Typ, der zufällig als kurzes int bezeichnet wird und 16 Bits (2 Bytes) verwendet. Dies enthält Zahlen im Bereich von -32768 bis +32767. Wenn Sie eine große Anzahl von Ints verwenden, können Sie möglicherweise Speicher sparen, indem Sie kurze Ints verwenden. Schneller geht es nicht, obwohl es halb so groß ist. 32-Bit-CPUs rufen Werte in Blöcken von jeweils 4 Byte aus dem Speicher ab. Das heißt, 32 Bit (daher der Name - 32 Bit CPU!). Das Abrufen von 16 Bit erfordert also immer noch einen 32-Bit-Abruf.

Es wird ein längeres 64-Bit aufgerufen lang Lang in C. Einige C ++ - Compiler, die diesen Typ nicht unterstützen, verwenden direkt einen alternativen Namen, z. sowohl Borland als auch Microsoft verwenden _int64. Dies hat einen Bereich von -9223372036854775807 bis 9223372036854775807 (signiert) und 0 bis 18446744073709551615 (nicht signiert).

Wenn Sie keine wissenschaftliche Programmierung mit sehr großen oder kleinen Zahlen durchführen, verwenden Sie nur Doppel für eine höhere Präzision. Floats sind gut für 6 Stellen Genauigkeit, aber Doppel bieten 15.

Betrachten Sie die Nummer 567.8976523. Es ist ein gültiger Gleitkommawert. Wenn wir es jedoch mit diesem Code ausdrucken, können Sie feststellen, dass es an Präzision mangelt. Die Zahl hat 10 Ziffern, wird jedoch in einer Float-Variablen mit nur sechs Ziffern Genauigkeit gespeichert.

Sehen Informationen zu Ein- und Ausgabe Einzelheiten zur Funktionsweise von Cout und zur Verwendung von Präzision. In diesem Beispiel wird die Ausgabegenauigkeit auf 8 Stellen festgelegt. Leider können Floats nur 6 enthalten, und einige Compiler geben eine Warnung zum Konvertieren eines Double in einen Float aus. Beim Ausführen wird dies ausgedruckt 567.89764

Wenn Sie die Genauigkeit auf 15 ändern, wird sie als 567.897644042969 gedruckt. Ein ziemlicher Unterschied! Verschieben Sie nun den Dezimalpunkt zwei nach links, sodass der Wert 5.678976523 ist, und führen Sie das Programm erneut aus. Dieses Mal wird 5.67897653579712 ausgegeben. Dies ist genauer, aber immer noch anders.

Wenn Sie den Wertetyp in double und die Genauigkeit in 10 ändern, wird der Wert genau wie definiert gedruckt. Floats sind in der Regel praktisch für kleine, nicht ganzzahlige Zahlen. Bei mehr als 6 Ziffern müssen Sie jedoch doppelte Zahlen verwenden.

Das Schreiben von Computersoftware wäre nicht sehr nützlich, wenn Sie keine Addition, Subtraktion usw. durchführen könnten. Hier ist Beispiel 2.

Zusätzlich zur Addition können Sie Subtraktion, Multiplikation und Division durchführen. Verwenden Sie einfach + für die Addition, - für die Subtraktion, * für die Multiplikation und / oder für die Division.

Mit Floats haben Sie keine Kontrolle darüber, wie viele Dezimalstellen angezeigt werden, es sei denn, Sie stellen die Genauigkeit wie oben gezeigt ein.

Jetzt können Breite, Ausrichtung, Anzahl der Dezimalstellen und Vorzeichen durch das eingestellt werden cout Objekt und iomanip Dateifunktionen einschließen.

Tausende Separatoren sind etwas komplizierter. Sie werden vom Gebietsschema eines PCs aus festgelegt. Ein Gebietsschema enthält für Ihr Land relevante Informationen wie Währungssymbole und Dezimalstellen sowie Tausendertrennzeichen. In Großbritannien und den USA verwendet die Zahl 100,98 einen Dezimalpunkt. Als Dezimalpunkt, während es in einigen europäischen Ländern ein Komma ist, bedeutet 5,70 € einen Preis von 5 Euro und 70 Cent.

erstellt ein Objekt mpunct das ist ein Verweis auf a Geldpunkt Vorlagenklasse. Hier finden Sie Informationen zum angegebenen Gebietsschema - in unserem Fall zum tausend_sep () Methode gibt das für Tausendertrennzeichen verwendete Zeichen zurück.

Hinweis Es scheint Diskrepanzen zwischen verschiedenen Compilern zu geben, wie cout.imbue verhält. Unter Visual C ++ 2005 Express Edition umfasste dies Trennzeichen. Der gleiche Code mit Microsoft Visual C ++ 6.0 jedoch nicht!

Wenn Sie einen dieser beiden Formatierungsmodi über das verwenden cout.setf dann Präzision() Legt die Anzahl der Dezimalstellen nach dem Dezimalpunkt fest (nicht die Gesamtzahl der Ziffern), aber Sie verlieren die Tausenderformatierung. Auch nachfolgende Nullen (wie von aktiviert ios_base:: showpoint ) werden automatisch aktiviert, ohne dass dies erforderlich ist Showpoint.

Sie würden so etwas wie einen Wert von 11.0909090909 erwarten. In der Tat ist der Wert 11. Warum ist das? weil der Ausdruck auf der rechten Seite (bekannt als rWert) ist eine Ganzzahl / Ganzzahl. Es wird also eine ganzzahlige Arithmetik verwendet, die den Bruchteil wegwirft und f 11 zuweist. Ändern in

In C gibt es keinen Typ wie a Bool. Ausdrücke in C basierten darauf, dass eine Null falsch oder eine Nicht-Null wahr ist. In C ++ der Typ Bool kann die Werte annehmen wahr oder falsch. Diese Werte entsprechen immer noch 0 und 1. Irgendwo im Compiler wird es eine haben

Oder zumindest verhält es sich so! Die beiden folgenden Zeilen sind ohne Casting gültig, sodass Bools hinter den Kulissen implizit in Ints konvertiert werden und sogar inkrementiert oder dekrementiert werden können, obwohl dies eine sehr schlechte Praxis ist.

Das if wird immer noch das if ausführen, da die fehlerhafte Variable nicht Null ist, aber es ist ein fehlerhafter Code und sollte vermieden werden. Es empfiehlt sich, sie bestimmungsgemäß zu verwenden. if (! v) ist gültig C ++, aber ich bevorzuge die explizitere if (v! = 0). Das ist jedoch Geschmackssache, keine Muss Richtlinie.

Es ist besser, wenn der Compiler zur Kompilierungszeit Fehler abfängt als der Benutzer zur Laufzeit

instagram story viewer