Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Программное вычисление машинного слова  (Прочитано 8194 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DaN(DR)
Гость
« : 13-01-2008 12:49 » 

Собственно, вопрос заключается в том, как в С++ программно узнать, какого размера машинное слово.
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 13-01-2008 13:21 » new

sizeof(int) разве не оно? Работает на этапе компиляции правда.
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
DaN(DR)
Гость
« Ответ #2 : 13-01-2008 13:51 » 

Ну я не уверен, что размер int равен размеру слова, поскольку на одной и той же машине int в Борланде "весит" 2 байта, а в DEV - 4. Плюс, как раз таки нужно, чтобы это определялось во время выполнения программы, иначе я могу просто как константу указать.
« Последнее редактирование: 13-01-2008 14:09 от DaN(DR) » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 13-01-2008 14:07 » 

DaN(DR), По стандарту, тип int должен соответствовать разрядности слова, для которой компилируется программа. Так как Борланд С++ компилирует для 16 разрядных систем, ты и получаеш 2 байта. Dev компилирует для 32 разрядных систем, отсюда 4 байта. Хотя из этого правила есть и исключения Улыбаюсь. У меня дома стоит 64 разрядная система, но gcc все равно компилирует для 32 разрядных систем. Чтобы нормально он компилировал, нужно ему включать флаги компиляции.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 13-01-2008 14:33 » 

ָУ меня есть Draft версия стандарта от 1 сентября 1998 года. С тех пор, я не думаю, что много изменилось в этом отношении:
Параграф 3.9.1 Fundamental types, абзац 2
Цитата
There are four signed integer types: "signed char", "short int", "int", and "long int". In this list, each type provides at least as much storage as those preceding it in the list. Plain ints have the natural size suggested by the architecture of the execution environment; the other signed integer types are provided to meet special needs.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines