Das ist tatsächlich etwas unschön, aber glücklicherweise schafft die Standardbibliothek hier Abhilfe: stdint.h gibt dir genau das was du suchst, nämlich Integer mit genau definierter Länge. Bei einem uint8_t z.B. kannst du dir sicher sein, daß der Datentyp 8 Bit breit ist und kein Vorzeichen hat (und zwar Compiler- und Plattformunabhängig).
Auch hier möchte ich auf die Standardbibliothek verweisen: stdbool.h definiert true und false. Bei true sollte man allerdings beachten daß in C grundsätzlich alles true ist was nicht 0 ist. Daher sollte man z.B. niemals auf Gleichheit mit true prüfen, sondern immer auf != false.Apropos wahr, da fällt mir doch gleich der Typ Boolen ein, den es in C nicht gibt.
Auch hier habe ich immer wieder unterschiedliche Varianten gefunden, was die Declaration von TRUE und FALSE betrifft.
ist TRUE jetzt 1 oder !=0 oder !=FALSE ?
PS: was den C-Standard betrifft ist C99 die Variante (Standard ISO/IEC 9899), die ich eigentlich jedem empfehlen würde (ist in einigen Punkten besser/intuitiver als das ältere C90). C++, C#, Objective C ist alles kein C, das sind Sprachen die auf C aufbauen.
Theoretisch gäbe es auch schon C11 (ISO/IEC 9899:2011) mit nochmal einigen Verbesserungen/Erweiterungen gegenüber C99, aber da weiss ich nicht wie es mit der Compilerunterstützung aktuell ausschaut.
Lesezeichen