Seite 1 von 1

welcher typ für 0xffffffffffffffff ((2^64)-1)

Verfasst: 4. Mai 2009 14:52
von dermoritz
ich versuche gerade (2^64)-1 in ein quint64 zu speichern - geht nicht:"integer constant is too large for "long" type"

der code sieht so aus:

Code: Alles auswählen

quint64 outA[4];
QByteArray out((const char*)outA,32);
outA[0]=0x0;
outA[1]=0x17;
outA[2]=0x138;
outA[3]=0xFFFFFFFFFFFFFFFF; //bumm
...
lässt man sich den Maximalwert von quint64 ausgeben
(und zwar so:

Code: Alles auswählen

quint64 maxQuint64=std::numeric_limits<qint64>::max();
)
kommt: 0x7fffffffffffffff
da wäre meine Frage wieso ist es nicht (2^64)-1. Aber viel komischer ist, das

Code: Alles auswählen

outA[3]=0x7FFFFFFFFFFFFFFF; //bumm
auch nicht geht. die größte Zahl die ich gefunden hab die geht ist 0xffffffff also (2^32)-1. --Wieso nur?

Verfasst: 4. Mai 2009 15:03
von dermoritz
ok da sieht man das ich ein c/c++ nobb bin: "LLU" als suffix hat mich gerettet. aber die frage warum der max Wert nicht (2^64)-1 ist interessiert mich nach wie vor.

Verfasst: 4. Mai 2009 17:58
von solarix
kommt: 0x7fffffffffffffff
da wäre meine Frage wieso ist es nicht (2^64)-1.
weil du auf "qint64" und nicht auf "quint64" (UNSIGNED!) abgefragt hast..jedenfalls steht das so in deinem Codeausschnitt...

Verfasst: 7. Mai 2009 16:29
von dermoritz
danke - den tipfehler hätte ich auch selbst entdecken können ;-)