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_BITMakros) 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) == 1auch. (Sie können einen Verweis auf ein Cray C-Handbuch finden, aber keinen Online-Zugriff darauf .)