Größtmögliche unsigned int-Zahl
-
joomoo schrieb:
Handelt es sich um ein C-Buch? Denn limits.h ist eine C-Header-Datei und hat eigentlich in einem C++-Buch nicht viel zu suchen.
Stimmt eigentlich, aber das Buch ist definitiv über C++
Weil in dem Buch heisst es auch immer cout <<, in C würde es ja printf heissen und auch sonst ist eigentlich alles in C++
Und die Lösung von dir, ich glaub die müsste stimmen, Danke

-
Regt sich drüber auf, dass das Buch C ist und dann schreibt er selbst kein C++...
Naja, versuchs mal damit:
#include <climits> std::numeric_limits<int>::max(); std::numeric_limits<long>::max(); std::numeric_limits<unsigned int>::max(); std::numeric_limits<int>::min(); std::numeric_limits<long>::min(); std::numeric_limits<unsigned int>::min();bb
-
unskilled schrieb:
Regt sich drüber auf, dass das Buch C ist und dann schreibt er selbst kein C++...
Da die Aufgabe ja vorgeschrieben hat, die C-Version des Limits headers zu verwenden.
Naja, versuchs mal damit:
#include <climits> std::numeric_limits<int>::max(); std::numeric_limits<long>::max(); std::numeric_limits<unsigned int>::max(); std::numeric_limits<int>::min(); std::numeric_limits<long>::min(); std::numeric_limits<unsigned int>::min();Da musst du dann den C++-Header inkludieren:
#include <iostream> #include <limits> int main() { std::cout << "int " << std::numeric_limits<int>::max() << "\n" << "long " << std::numeric_limits<long>::max() << "\n" << "unsigned long " << std::numeric_limits<unsigned long>::max() << std::endl; }
-
joomoo schrieb:
Da musst du dann den C++-Header inkludieren: [...]
Ach verdammt - mein Fehler... Bin ja auch gerad erst aufgestanden ^^
bb
-
Wobei ich die C-Version der Konstanten besser finde, als dieses std::numeric_limits<blahblah - Gedöns
-
ich eigtl nicht... mal davon abgesehen, dass man diese dinge häufig bei templates braucht und dann mit dem C gefrickel 20 if typeid == ... hat, sehen sie auch viel ästhetischer aus : D
das einzige ungünstige ist, dass man immer mit max und min-makros aufpassen muss, die irgendwo mal jmd definiert hat ><
aber naja - man kann nicht alles haben ^^bb
-
Es geht wohl eher darum zu verstehen wie man mit den Operatoren umgeht.
Die Datentypen haben eine bestimmte Größe, von 0 (min) - bis ? (max).unsigned int vorzeichenlosInteger = 0; cout << ~vorzeichenlosInteger << endl; // Bitweise Negation (~)Das kannst du mit anderen Datentypen auch machen.
Zusatz: Als kleine Übung kannst du mit 'Bitshiften' üben.
Ein Vorzeichen behafteter Typ unterscheidet sich vom Vorzeichen losen Typ nur von einem Bit (Vorzeichen Bit).
Wenn ich also den Wert von Int habe kann ich durch Bitshiften von Int nach unsigned Int mir den Wert anzeigen lassen.In welche Richtung? Links oder Rechts?
Wenn du das System verstanden hast wirst du die Frage ganz einfach beantworten können.
-
c++fan 2008 schrieb:
Wobei ich die C-Version der Konstanten besser finde, als dieses std::numeric_limits<blahblah - Gedöns
dieses std::numeric_limits-Gedöns hat durchaus seine Vorteile. Was ist denn, wenn Dein Zahlentyp ein Template-Parameter ist. Ein einfaches Beispiel:
template <typename NumericType> void printMax() { std::cout << std::numeric_limits<NumericType>::max() << '\n'; } void foo() { printMax<unsigned>(); printMax<unsigned long>(); printMax<int>(); printMax<double>(); }Mach das mal mit dem XXX_MAX-C-Gedöns.
-
koppsalat schrieb:
Zusatz: Als kleine Übung kannst du mit 'Bitshiften' üben.
Ein Vorzeichen behafteter Typ unterscheidet sich vom Vorzeichen losen Typ nur von einem Bit (Vorzeichen Bit).
Wenn ich also den Wert von Int habe kann ich durch Bitshiften von Int nach unsigned Int mir den Wert anzeigen lassen.In welche Richtung? Links oder Rechts?
Wenn du das System verstanden hast wirst du die Frage ganz einfach beantworten können.Also bitshiften an sich habe ich verstanden, aber wie man das mit Bitshiften machen soll verstehe ich nicht
-
C++ rulez schrieb:
Also bitshiften an sich habe ich verstanden, aber wie man das mit Bitshiften machen soll verstehe ich nicht
Naja, um von
signednachunsignedzu kommen, benutzt man auch nicht unbedingt einen Bitshift...Entweder du castest oder - wenn du das auf Bit-Ebene abhandeln willst - du machst es mit AND und NOT.
-
Ich dachte es geht hier um die Übung.
unsigned int a = 0 ~a -> Negation ~a>>1 -> Was passiert hier?Es geht um das Verstehen, aber naja, nur ein Vorschlag von mir.
-
mammamia;