Gibt es Maschinen (oder Compiler), wo sizeof(char) != 1
?
Sagt der C99-Standard , dass sizeof(char)
bei der Implementierung der Standardkonformität genau 1 sein muss? Wenn ja, geben Sie mir bitte die Abschnittsnummer und das Zitat.
Update:
Wenn ich einen Computer (CPU) habe, der keine Bytes adressieren kann (minimaler Lesevorgang ist 4 Bytes, ausgerichtet), aber nur 4 Bytes ( uint32_t
), kann der Compiler für diesen Computer sizeof(char)
4 definieren ? sizeof(char)
wird 1 sein, aber char wird 32 Bit ( CHAR_BIT
Makros) haben
Update2: Aber die Größe des Ergebnisses ist KEIN BYTES! es ist die Größe von CHAR. Und char kann 2 Byte oder (möglicherweise) 7 Bit sein?
Update3:
Ok. Alle Maschinen haben sizeof(char) == 1
. Aber welche Maschinen haben CHAR_BIT > 8
?
char
(anstelle von wchar
) verwenden. Selbst wenn der Standard besagt, dass sizeof(char)
dies 1 sein muss, würde ich mich nicht auf diese Annahme verlassen.
sizeof(char)
ist immer 1, auch wenn char 32-Bit ist (wie es auf einigen Systemen der Fall ist). C hat viele lustige Warzen.
sizeof(char) == sizeof(short) && sizeof(char) == sizeof(int)
erinnere mich nicht, ob sizeof(int) == sizeof(long)
oder ob CHAR_BIT 32 oder 64 war; ich erwarte, dass es 32 war, und ich denke sizeof(long) == 1
auch. (Sie können einen Verweis auf ein Cray C-Handbuch finden, aber keinen Online-Zugriff darauf .)