Ungültige Funktionsargumente behandeln, ja oder nein?
-
Furble Wurble schrieb:
Cyres schrieb:
Weil long long mindestens(!) 64 Bit hat. Wurde mit C++11 in den Standard aufgenommen.
Das überrascht mich jetzt.
Ich kann's aber nicht finden. Wo steht das?Danke,
FWwww.gidf.de

2 Sekunden: http://en.wikipedia.org/wiki/C%2B%2B11#Type_long_long_int
-
Cyres schrieb:
Furble Wurble schrieb:
Cyres schrieb:
Weil long long mindestens(!) 64 Bit hat. Wurde mit C++11 in den Standard aufgenommen.
Das überrascht mich jetzt.
Ich kann's aber nicht finden. Wo steht das?Danke,
FWwww.gidf.de

2 Sekunden: http://en.wikipedia.org/wiki/C%2B%2B11#Type_long_long_intLass mich meine Frage umformulieren: "Wo steht das im Standard?"
-
Furble Wurble schrieb:
Das überrascht mich jetzt.
Ich kann's aber nicht finden. Wo steht das?Gute Frage, ich kann es auch nicht finden. Das einzige, das ich finde, ist:
There are five standard signed integer types : “signed char”, “short int”, “int”, “long int”, and “long
long int”. In this list, each type provides at least as much storage as those preceding it in the list.CHAR_BIT Angaben zu den einzelnen Typen finde ich auch keine.
-
Die Wertebereiche stehen im C99-Standard, auf den sich C++11 bezieht.
-
Bashar schrieb:
Die Wertebereiche stehen im C99-Standard, auf den sich C++11 bezieht.
Ja - jetzt hab ich's auch.

18.3.3 Climits
besagt das in climits das gleiche wie in limits.h steht.Und in limits.h (c99/5.2.4.2 Numerical limits) stehen 64 bittige Bereiche für LLONG_MAX, LLONG_MIN, ULLONG_MAX.
Hmmm...fast ein bißchen schade, dass es nicht mehr so allgemein gehalten ist...
-
Furble Wurble schrieb:
Bashar schrieb:
Die Wertebereiche stehen im C99-Standard, auf den sich C++11 bezieht.
Ja - jetzt hab ich's auch.

18.3.3 Climits
besagt das in climits das gleiche wie in limits.h steht.Und in limits.h (c99/5.2.4.2 Numerical limits) stehen 64 bittige Bereiche für LLONG_MAX, LLONG_MIN, ULLONG_MAX.
Hmmm...fast ein bißchen schade, dass es nicht mehr so allgemein gehalten ist...
Japs, etwas versteckt das Ganze.
-
Furble Wurble schrieb:
Hmmm...fast ein bißchen schade, dass es nicht mehr so allgemein gehalten ist...
Was wie allgemein (*auf dem Schlauch steh*)

Meinst du dass ein Mindestbereich für bestimmte Typen vorgeschreiben ist? Falls ja, was soll daran bitte schade sein? Ich sehe das klar als Vorteil.
-
Gugelmoser schrieb:
Deswegen wollte ich pumuckl fragen, wieso er beim Parameter den C++11 Typen nimmt, beim Rückgabetyp jedoch nicht.

Weil pumuckl auf Sones Code aufgesetzt hatte, der genau das macht. Aber Camper hats eh gerockt, ich geh mich schämen

-
hustbaer schrieb:
Furble Wurble schrieb:
Hmmm...fast ein bißchen schade, dass es nicht mehr so allgemein gehalten ist...
Was wie allgemein (*auf dem Schlauch steh*)

Meinst du dass ein Mindestbereich für bestimmte Typen vorgeschreiben ist? Falls ja, was soll daran bitte schade sein? Ich sehe das klar als Vorteil.Ich meinte die schon von Gugelmoser zitierte Garantie aus früheren Versionen von C++.
There are five standard signed integer types : “signed char”, “short int”, “int”, “long int”, and “long long int”. In this list, each type provides at least as much storage as those preceding it in the list.
Meiner Erfahrung nach, war das allerdings auch häufig Quelle für Diskussionen und vielleicht auch Fehler. Jetzt rückt der Standard näher an Vermutungen von Programmieranfängern und erspart allen das Nachschlagen in der Compilerdokumentation, bzw.
numeric_limits<...>::max()und Konsorten.Also wohl eine gute Sache.
Wobei mir die Diskussionen fehlen werden...

-
Es gab auch in C++98 den Rückgriff auf die limits.h von C.
Dazugekommen ist nur (unsigned) long long.
-
Bashar schrieb:
Es gab auch in C++98 den Rückgriff auf die limits.h von C.
Dazugekommen ist nur (unsigned) long long.Du hast recht.
Und nachdem ich jetzt mal draufgeschaut habe ist eigentlich auch kein Unterschied zu früher auszumachen. Die Werte sind immer noch von der Implementierung abhängig. Die Garantie ist auch immer noch nur ein Wertebereich, der mindestens abgedeckt wird.
Also viel Wirbel von mir um nix - ich hätte nur mal früher in C99 schauen müssen.