Maximal/Minimal Int
-
Hallo zusammen,
ich komme mit der Ermittlung des größten/kleinsten Integer-Wertes nicht klar.
int sX; sX=numeric_limits<int>::max();
dies geht ohne Probleme.
Doch wenn ich das mit der min()-Funktion versuche, kommt ein Fehler.
Woran kann das liegen?
Habt vielen Dank
-
Was für ein Fehler? (MELDUNG)
-
#define INTMAX ((int)(~0U>>1)) #define INTMIN (-INTMAX -1)
mfg
-
spjoe schrieb:
#define INTMAX ((int)(~0U>>1)) #define INTMIN (-INTMAX -1)
mfg
sehr schlecht
-
@mfc
Nur weil du den code nicht verstehst?
-
mfc schrieb:
spjoe schrieb:
#define INTMAX ((int)(~0U>>1)) #define INTMIN (-INTMAX -1)
mfg
sehr schlecht
in cpp gibts bessere loesungen aber sonst ist nichts falsch daran
-
Also ohne Fehlermeldung kann man da wirklich nur raten. Beim Posten könnte man die schon ruhig mal abtippen... o_O
Gerate #1: Irgend ein Depp hat min als Makro definiert und wenn du #undef min vor die Zeile schreibst, geht es. (windows.h z.B. definiert min und max, wenn man nicht NOMINMAX definiert.)
-
spjoe schrieb:
@mfc
Nur weil du den code nicht verstehst?In C nimmt man INT_MIN und INT_MAX.
In C++ nimmt man std::numeric_limits.Aber niemals so einen Schwachsinn. Deinen Code will ich ich gar nicht verstehen. :p
-
spjoe schrieb:
@mfc
Nur weil du den code nicht verstehst?Weil es in C++, im Gegensatz zu C, nicht darum geht, möglichst viel selbst zu schreiben und dadurch sein Wissen zu demonstrieren. Selbst wenn numeric_limits<> wirklich nicht gehen sollte (rauszufinden, warum es das tut, wäre erstmal angebrachter), gäbe es noch <climits>.
-
mfc schrieb:
spjoe schrieb:
@mfc
Nur weil du den code nicht verstehst?In C nimmt man INT_MIN und INT_MAX.
In C++ nimmt man std::numeric_limits.Aber niemals so einen Schwachsinn. Deinen Code will ich ich gar nicht verstehen. :p
glaubst du INT_MIN, INT_MAX und std::numeric_limits sind vom himmel gefallen?!
Das muss auch jemand programmiern
BartS wollt wissen wies geht und ich habs in gezeigt wie man das macht wenn man selber code. Datdurch kann man es vieleicht auch besser verstehen.PS:
Schau dir einmal paar header files an
mgf
-
#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */ #define INT_MAX 2147483647 /* maximum (signed) int value */ #define UINT_MAX 0xffffffff /* maximum unsigned int value */ #define LONG_MIN (-2147483647L - 1) /* minimum (signed) long value */ #define LONG_MAX 2147483647L /* maximum (signed) long value */ #define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */
-
mfc schrieb:
#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */ #define INT_MAX 2147483647 /* maximum (signed) int value */ #define UINT_MAX 0xffffffff /* maximum unsigned int value */ #define LONG_MIN (-2147483647L - 1) /* minimum (signed) long value */ #define LONG_MAX 2147483647L /* maximum (signed) long value */ #define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */
sicher nicht linux
-
hä?
Das war ein Ausschnitt der limits.h aus Visual C++ 7.1
-
ja ich meinte nur, weil die defines nur fuer 32bit integer ausgelegt sind
-
mfc schrieb:
spjoe schrieb:
#define INTMAX ((int)(~0U>>1)) #define INTMIN (-INTMAX -1)
mfg
sehr schlecht
"Sehr schlecht" ist keine konstruktive Kretik
Ich fände es bessser wenn man in diesem forum nur kostruktive Kretik schreibt
mfg
-
leo aka qsch schrieb:
ja ich meinte nur, weil die defines nur fuer 32bit integer ausgelegt sind
windows is halt net platform unabhängig
-
Kretik schreibt man Kretik.
-
Kritik*
-
zum urspruenglichen Problem zurueck:
beim VC++ ist min ein #define - deshalb gibt es bei numeric_limits fehler.
einfach mal #undef min davor schreiben, dann muesste es klappen.und das diese konstanten nicht portabel sind, ist klar. deshalb verwenden wir ja auch keine magischen zahlen, sondern konstanten, die diese zahlen verstecken und fuer jede plattform angepasst werden.
-
Die hab ich nur gepostet, weil er meinte ich soll in Header gucken.
Hoffentlich kopiert sich das keiner in seine Projekt rein.
Machen aber bestimmt einige.