Int32 int64 und bool32
-
hallo alle zusammen,
kann mir vielleicht sagen was dies bedeutet?int32 int64 und bool64??
vielen Dank
ema
-
Im C Standard kommen diese bezeichner zwar nicht vor, aber es ist oft ueblich aus Gruenden der Portabilitaet typ-aliase anzulegen.
zB ist ein int nicht immer 4 Byte gross, sondern manchmal vielleicht nur 2 und woander dann wieder 8. Je nach Plattform eben.
Um diesem Problem vorzubeugen verwendet man oefters typedefs dafuer:
typedef int Int32;
und wenn dann ein int ploetzlich 64 bit gross ist, dann muss man nur das typedef aendern:
typedef short Int32;
und schon bleibt der Typ Int32 immer ein integer typ mit 32 Bit.
Soweit ist int32 und int64 ja jetzt erklaert - deine Library, Compiler Hersteller, wer auch immer, bietet dir diese Typedefs an.
Der Sinn eines bool64 erschliesst sich mir zwar im moment nicht, aber der Erfinder wird sich schon was dabei gedacht haben.
-
Da das keine offiziellen C-Bezeichner/Typen sind kann ich nur spekulieren:
int32 <- signed integer, 32 Bit breit
int64 <- signed integer, 64 Bit breit
Und bool64 macht imho mal gar keinen Sinn
edit: Eine Sekunde. Das ist Rekord :p
-
bool64??
Das müsste doch bool1 heissen?
-
vielleicht ist 'bool64' ein makro das ein bit aus einem longlong holt?
-
bool1 macht relativ keinen sinn, denn bit lassen sich nur schwer adressieren. deswegen werden fuer bools meistens ganze oder mehrere bytes verschwendet. ist schneller und man kann einfacher drauf zugreifen (zumindest was C angeht).
-
c.rackwitz schrieb:
bool1 macht relativ keinen sinn, denn bit lassen sich nur schwer adressieren. deswegen werden fuer bools meistens ganze oder mehrere bytes verschwendet. ist schneller und man kann einfacher drauf zugreifen (zumindest was C angeht).
Dann macht bool64 nur Sinn auf 64bit Plattformen?
-
Wenn ein int64 angeboten wird, muss das nicht heißen, dass man sich auf einer 64-bit-platform bewegt. Der Typ ist dann eben 64 bit breit - und müßte auf einer 8-bit-Maschine mit etwas mehr Aufwand eingerichtet werden. Da werden alle Funktionen, die auf dem Typ operieren, maschinensprachlich etwas komplexer (und damit auch langsamer...).
Generell solltest Du Dir überlegen, wo Du wirklich 64-bitter brauchst, und sie nur dort explizit einsetzen. int ist halt als 'die der Maschine angenehmste Wortlänge' definiert... - ich definiere mir auch gerne Typen, bei denen ich weiß, dass sie eine gewisse Mindestbreite haben!
Bei Dateizugriffen können Typenlängen sehr relevant sein, deshalb ist ein bool64, bei dem man sich drauf verlassen kann, dass er 64 Bit breit ist, nicht grundverkehrt. Ist aber auch kein Fehler von sizeof Gebrauch zu machen...
-
ein bool64 macht deswegen nur auf 64bit architekturen sinn, weil das optimal fuer den zugriff ist.