Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File15.13.3.2.3 Datentypen TOS In diesem Text werden die folgenden Datentypen verwendet: Name Größe ---------------------------------------- int 16 Bit mit Vorzeichen unsigned int 16 Bit ohne Vorzeichen long 32 Bit mit Vorzeichen unsigned long 32 Bit ohne Vorzeichen Der Datentyp char ist ein (ASCII-)Zeichen und wird hier nur als Zei- gertyp verwendet, d.h. als Zeiger auf einen C-String (eine Folge von Zeichen, die mit einem Nullbyte abgeschloßen sind). Union Eine Union entspricht einem varianten Record in Pascal. Es handelt sich um eine Struktur, deren einzelne Elemente "übereinander" liegen, d.h. denselben Speicherbereich belegen. Welches Element gerade gültig ist, ergibt sich aus dem Kontext bzw. bleibt dem Programmierer über- lassen. Beispiel: In der Struktur PFONTINFO wird für die Größenangabe eine Union `fsize' verwendet: union fsize { int size; /* Fontgröße in Punkt */ fix31 size31; /* Fontgröße in 1/65536 Punkt */ }; Der Speicherbedarf dieser Union beträgt vier Bytes, da der Typ fix31 vier Bytes groß ist. Man könnte nun dem Element `size31' eine Größen- angabe in 1/65536 Punkt zuweisen und dann den Wert in ganzen Punkt aus dem Element `size' auslesen - dies ist aber nicht empfehlenswert, da bei der Umrechnung fix31 nach pt immer gerundet werden sollte, s.u. fix31 Der Datentyp fix31 ist eine Festkommazahl, bei dem die oberen 16 Bit den vorzeichenbehafteten Vorkomma-Anteil darstellen und die unteren 16 Bit den vorzeichenlosen Nachkomma-Anteil. Er wird ausschließlich für Größenangaben von Fonts verwendet, die damit auf 1/65536 Punkt genau angegeben werden können. Bei der Umrechnung von fix31 nach pt darf man das Runden nicht ver- gessen. Zitat aus dem NVDI-Guide: Man darf nie, nie, niemals den Nachkommateil einfach abschneiden!