hallo zusammen,
ich habe hier ein ganz merkwürdige Sache bei der Anwendung vom Datentyp
long long:
Compiler gcc3.4 mit uclibc 0.9.27
int main( int argc, char **argv )
{
int llsize;
long long test=0x12345678; // = 0x123456789;
llsize=sizeof( test );
printf ("longlong size=%d",llsize);
return 0;
}
Ausgabe: longlong size=8
ABER wenn ich eine Konstante (0x123456789) in der long long Variable
"test" speichern will gibts folgende Fehler vom Compiler:
"error: integer constant is too large for "long" type"
Wenn long long 8Bytes groß ist, warum kann ich dann nur max 4Bytes drin
speichern?
hat einer n Ahnung?
Danke
Thomas schrieb: > long long test=0x12345678; // = 0x123456789; Richtig:
1 | long long test=0x12345678LL; // = 0x123456789; |
weil Konstanten per default int sind. Und in Int passt es nicht. Die Zuweisung passiert später. Volker
Volker Zabe schrieb: > weil Konstanten per default int sind. Sie haben den kleinsten Datentyp, der sie darstellen kann, mindestens aber "int". Die Abstufung ist etwas unterschiedlich für dezimale und nicht-dezimale Angabe. 0x123456789 ist also implizit "long long" wenn sizeof(long)==4.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.