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

Alles rund um die Programmierung mit Qt
Antworten
dermoritz
Beiträge: 21
Registriert: 27. April 2009 09:37

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

Beitrag 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?
dermoritz
Beiträge: 21
Registriert: 27. April 2009 09:37

Beitrag 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.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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...
dermoritz
Beiträge: 21
Registriert: 27. April 2009 09:37

Beitrag von dermoritz »

danke - den tipfehler hätte ich auch selbst entdecken können ;-)
Antworten