long: 32 Bit vs 64 Bit
-
Das wird im Standard nicht festgelegt, also kann jeder Compiler selber entscheiden, wie er die Werte darstellt (es ist noch nicht einmal festgelegt, daß int in Zweierkomplement rechnen muß). Und der Compiler wird normalerweise die Darstellung verwenden, mit der der drunterliegende Prozessor am besten umgehen kann.
-
Ok. Das heißt, dass vermutlich dieser Code:
int i = 0xAABBCCDD; char* c = (char*)&i; printf("%i", *c);
Auf einer Little Endian Maschine DD ausgibt und auf einer Big Endian Maschine AA, oder?
Mein Problem ist also gelöst, wenn ich überall int32_t benutze?
-
Nein.
-
Was nein?
-
Andreas771 schrieb:
Mein Problem ist also gelöst, wenn ich überall int32_t benutze?
Wutz schrieb:
Nein.
Dein Problem ist nicht gelöst wenn du überall int32_t benutzt.
-
Fragenerklärer schrieb:
Andreas771 schrieb:
Mein Problem ist also gelöst, wenn ich überall int32_t benutze?
Wutz schrieb:
Nein.
Dein Problem ist nicht gelöst wenn du überall int32_t benutzt.
Wieso nicht? Wenn ich int32_t benutze, dann schreibe ich sowohl in 32 als auch 64 Bit Modus immer gleich viele Bytes?
-
Wie schnell vergisst du eigentlich die vorigen Beiträge, z.B. zum Thema Byteorder, dass du solche Fragen stellst?
-
-
Wutz schrieb:
Wie schnell vergisst du eigentlich die vorigen Beiträge, z.B. zum Thema Byteorder, dass du solche Fragen stellst?
Ich habe doch bereits gesagt, dass ich mich um Endianess kuemmere. Was denkst du denn wieso ich vor fwrite eine Funktion namens swapBytes() aufrufe?
Also nochmal: Wenn ich mich um die Endianess kuemmere, und immer int32_t benutze, dann sollte schreiben und lesen sowohl in 32 bit als auch 64 bit funktionieren, oder?
-
Andreas771 schrieb:
Ich habe doch bereits gesagt, dass ich mich um Endianess kuemmere. Was denkst du denn wieso ich vor fwrite eine Funktion namens swapBytes() aufrufe?
Weil du der Meinung bist, daß diese Funktion cool aussieht
Wir wissen nicht, was genau diese Funktion macht, aber wenn du nicht für jedes System eine eigene Version hast, wird es vermutlich irgendwo das falsche sein.