LINUX.ORG.RU

Ответ на: комментарий от normann

Примеров я не знаю, но размер указателя скорее коррелирует с размером шины адреса, а не шины данных.

Причем sizeof(void*) == 8 даже не означает 64х разрядную шину адреса.

Лучше делать развесистые ифдефы по предефайнам компилятора типа __i386__.

sergej ★★★★★
()

Смотря какой смысл вкладывается в выражение «64-разрядная машина». Обычно имеют в виду машину с sizeof(void*) == 8.

annulen ★★★★★
()
Ответ на: комментарий от annulen

Смотря какой смысл вкладывается в выражение «64-разрядная машина». Обычно имеют в виду машину с sizeof(void*) == 8.

Теоретически можно заставить x86 давать sizeof(void*) == 8, юзая сегменты. Обычно всё-таки «64-разрядная машина» это когда регистры 64-разрядные, то есть они не тормозят сильнее, чем при обращении с 32-разрядными (ну или 128-разрядными). Но вот изнутри С всякими sizeof это никак не определишь, всё же I86_64 это несколько снаружи.

vodz ★★★★★
()

Ты скажи, тебе для каких платформ, и сколько компиляторов хочешь охватить? Хватит ли тебе UNIX-like? А может еще и DSP хочешь? Там запросто можно sizeof(char) == 4 получить.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

какой ещё сюрприз, компилятор или соответствует стандартам, или нет

сколько в этом char-e битов, это уже платформозависимые особенности, может быть произвольное количество

Harald ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Там запросто можно sizeof(char) == 4 получить.

В C++ sizeof(char) == 4 не получить никак и никогда.

Если где-то sizeof(char) == 4, то это не C++.

utf8nowhere ★★★
()
Ответ на: комментарий от I-Love-Microsoft

sizeof(char)==1 даже если char не 1 байт индексация в C/C++ ,идёт размерами sizeof(char) если нужен правильный размер char то нужно юзать char_bits

lberserq
()
Ответ на: комментарий от Softwayer

Да вы правы — char это минимально адресуемый объект.(ячейка т.е «байт») . Sizeof(char) всегда равен 1 . Но засада в том что в дайт Char_bits>=8 тоже всегда(2.2.4.2 ANSI C)Соответственно может быть. Так что char_bits --32 => что соответствует 4м байтам на x86

lberserq
()
Ответ на: комментарий от I-Love-Microsoft

Там запросто можно sizeof(char) == 4 получить.

А еще говорят, что при ядерном взрыве синус может до 7 доходить

annulen ★★★★★
()
Ответ на: комментарий от annulen

Только во время ядерного взрыва народ вспоминает что есть поля изоморфные комплексному?

lberserq
()
Ответ на: комментарий от I-Love-Microsoft

На DSP как раз sizeof(char) будет 1 (и я так понял по другому и не может быть) только вот смысл этого может быть какой угодно, так как sizeof возвращает результат в char'ах.

Без точных сведений, переданных компилеру - никак.

slapin ★★★★★
()
Ответ на: комментарий от anonymous

Вот черт, для каждого анекдота граничные условия задавать надо :(

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.