?
Weyl schrieb:
ich bin mir nicht sicher, ob ich das ganz verstehe. kann man zumindest für PCs und MACs sagen, dass 1 char = 1 byte = 8 bit?
Praktisch ja. Außerhalb des Embedded-Bereichs hat sich das so eingependelt, und es ist nicht abzusehen, dass sich das bald ändert. Eine Änderung der Bytebreite brächte arge Probleme in der Kommunikation mit anderen Maschinentypen mit sich, und sehr viel Code müsste neu geschrieben werden. Ich denke nicht, dass sich das für irgendjemanden lohnen könnte.
Wenn du vorhast, in den Embedded-Bereich zu gehen, sieht es ganz anders aus. TI-Taschenrechner rechnen beispielsweise (soweit ich informiert bin) mit 16-Bit-Bytes, und mitunter fasst int da auch nicht mehr Werte als char. Dass an solche Szenarien nicht immer gedacht wurde, als die Funktionen, die später in die C-Standardbibliothek einziehen sollten, entworfen wurden, kann man am oben beschriebenen fgetc-Mechanismus wunderbar sehen; allerdings stellt sich die Frage eines Dateisystems in diesem Zusammenhang eh nicht. Generell kann man sich in diesem Bereich nicht darauf verlassen, dass einem der komplette C-Standard zur Verfügung steht oder alle Details ganz genau implementiert wurden.
Oh, und wenn du ein historisches Interesse an alten Großrechnern hast, da geht es auch wild durcheinander. Zwischen 6 und 36 Bit pro Byte ist da fast alles zu haben.
Gleichwohl: Wenn es sich mit vertretbarem Aufwand machen lässt, sollte man sich ruhig an CHAR_BIT ketten. Die Zukunft kann niemand vorhersehen, und wenn man sich eng an den Standard hält, hat man im Zweifel eine bessere Chance, dass der eigene Code die Änderung technischer Details unbeschadet überlebt. Pedanterie ist (in vernünftigen Grenzen) für Programmierer eine gute Angewohnheit.