Sizeof(char) по определению равно 1, независимо от размера. Sizeof(int) определяет, сколько char-ов укладывается в одном int-е. Даже на словных машинах стараются делать char равным 8 бит, иначе получается бардак. И только изобретатели DSP TMS320 семейства C5000 решили рискнуть. В этой архитектуре и байты, и int 16-битные, по другому не выходит.
В железе не выходит, а в компиляторе могли бы и сделать. На самом деле, по большей части там наплевать на CHAR_BIT=16. Только когда начинаешь работать с сырыми данными, текстовыми файлами или когда память кончается, приходится вручную паковать и распаковывать. DSP задачи (ради которых и делали процессор) от этого не страдают.
Или так, или sizeof(int) определяет, на сколько нужно умножать смещение в массиве целых, чтобы получить смещение к указателю. Чем TMS320 принципиально отличается от любой другой словной машины, на которой могло бы быть то же самое sizeof(int) == 1, неясно.
no subject
Date: 2012-12-21 00:26 (UTC)no subject
Date: 2012-12-21 00:37 (UTC)no subject
Date: 2012-12-21 01:12 (UTC)На самом деле есть одна (современная) архитектура, где sizeof(char) == sizeof(int). Но вряд ли ты ее вспомнишь. :)
no subject
Date: 2012-12-21 01:27 (UTC)Вряд ли вспомню, мало ли разных специализированных процессоров.
no subject
Date: 2012-12-21 02:00 (UTC)no subject
Date: 2012-12-21 03:35 (UTC)no subject
Date: 2012-12-21 03:38 (UTC)no subject
Date: 2012-12-21 05:52 (UTC)no subject
Date: 2012-12-22 01:13 (UTC)no subject
Date: 2012-12-22 01:32 (UTC)no subject
Date: 2012-12-21 00:45 (UTC)no subject
Date: 2012-12-21 01:09 (UTC)no subject
Date: 2012-12-21 01:42 (UTC)no subject
Date: 2012-12-21 03:36 (UTC)no subject
Date: 2012-12-21 07:49 (UTC)no subject
Date: 2012-12-21 15:54 (UTC)no subject
Date: 2012-12-21 20:30 (UTC)