![]() |
|
Модераторы: bsa |
![]()
|
|
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
В своём справочнике по С, Шилдт пишет, что стандартами C89 и C99 определены минимально допустимые диапазоны значений для базовых типов. Т.е. диапазоны могут быть и больше. Например, у меня 64-х разрядный процессор + 64-битная операционная система, в свете чего я предполагаю, что в моём случае минимально допустимый диапазон может существенно отличаться от указанного Шилдтом...
Как в C программно определить потенциально допустимые (учитывая только архитектуру компьютера) диапазоны значений для базовых типов на текущей локальной машине, а так же фактически допустимые диапазоны значений (учитывая архитектуру компьютера + разрядность ОС) ? Это сообщение отредактировал(а) Compositum - 11.5.2011, 07:35 |
|||
|
||||
| Compositum |
|
||||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Вопрос снят, т.к. в гугле нашел ответ - sizeof().
Написал такой код:
Результат получился таким (размеры, как я понял - в байтах):
в моём случае long double существенно отличается от значения, указанного Шильдтом в справочнике - 16 байт вместо 10. В общем - выяснил то, что хотел Это сообщение отредактировал(а) Compositum - 11.5.2011, 08:15 |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
sizeof возвращает размер в char'ах. char - это минимально адресуемый объем данных. Именно поэтому, sizeof(char) всегда равен 1.
|
|||
|
||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
а как тогда программно узнать размер char в байтах? |
|||
|
||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
зачем программно, если (оттуда же)
Добавлено через 5 минут и 20 секунд
хммм. должен быть 8. и ещё: ты самое интересное не вывел - sizeof( void* ) Это сообщение отредактировал(а) borisbn - 11.5.2011, 17:48 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
спасибо! понятно, тогда вопрос отпадает, раз размер всё же в байтах.
п.с. Жаль, что в своей книге Керниган и Ритчи не рассматривают вопросы локализации и работу с расширенными символами (в приложении так и пишут, мол эту тему опускаем)... |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
это где такое было? 10 байт -------------------- |
|||
|
||||
| Compositum |
|
||||||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
возможно дело в том, что у меня процессор Core I7 (т.е. архитектура процессора - x64) + Ubuntu 11.04 x64. Приду домой - добавлю строку и для void*, а почему знак умножения? Добавлено @ 17:59
Справочник по С, автор Шильдт (издание, если не изменяет память - 4-е, изложены полностью C89 и C99). Если нужен номер страницы - домой приду, сообщу (книги под рукой сейчас нет). Да, точно 4-е, вот она. Это сообщение отредактировал(а) Compositum - 11.5.2011, 18:05 |
||||||
|
|||||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
а может 0х10 ?
-------------------- |
|||
|
||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
я сейчас уже ухожу с работы. через полтора часа буду дома - проверю ещё раз и отпишусь. |
|||
|
||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Проверил (стр 45): 80 бит. Соответственно 10 байт, как я и писал.
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
старые досовские компиляторы выдавали sizeof(int) = 2 байта, так как на x86 была адресация в 16 бит.
не удивлюсь если книженция старая то могла быть написана для досовских компиляторов, а там возможно и 10 байт было. Завтра на работе посмотрю книженцию. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Compositum |
|
||||||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Книга издания 2010 года.
Вывожу:
|
||||||
|
|||||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
да ну не может быт 10 байт, там все кратно. а 10 никуда не лезет.
Добавлено через 10 минут и 9 секунд http://en.wikipedia.org/wiki/C_variable_ty...nd_declarations -------------------- |
|||
|
||||
| Compositum |
|
|||
|
Senior developer ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 430 Регистрация: 6.1.2008 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Я видел, это в вики. Давайте условимся, что это последний раз, когда я фотографирую книжку - тынц. Таблица 2.1. последняя запись (long double). Возможно в книге опечатка - за что купил, за то и продаю. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |