integer или LongInt
Модератор: Модераторы
integer или LongInt
Как-то задумался, а не будет ли проблем с integer? А то пишу его везде. Подумываю перейти на LongInt.
Последний раз редактировалось resident 10.05.2016 14:10:38, всего редактировалось 2 раза.
Интересный случай
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Какие могут проблемы?
На ум приходит только какойнить бинарный формат куда естественно надо сохранять платформенно независимые типы. Внутри программы лучше использовать какраз integer
На ум приходит только какойнить бинарный формат куда естественно надо сохранять платформенно независимые типы. Внутри программы лучше использовать какраз integer
ssadragon писал(а):Интересный случай
Да, на шесть строк выше выделенной уже другая картина. Т.е. чем будет являться integer неизвестно уже сейчас, а что будет завтра? Да и функции к примеру IntToStr завязаны на LongInt.
zub писал(а):На ум приходит только какойнить бинарный формат куда естественно надо сохранять платформенно независимые типы.
А мне на ум приходит тема про численные методы, поднимавшаяся на днях на форуме. Так вот я уже сомневаюсь, что мои функции будут везде работать. А делал бы на LongInt, то и в Африке бы заработали как у меня.
zub писал(а):Внутри программы лучше использовать какраз integer
Чем? Только не говорите про объем памяти, в моем случае это мизер по сравнению с прицепленным багажом библиотек Лазаруса.
>>Так вот я уже сомневаюсь, что мои функции будут везде работать. А делал бы на LongInt, то и в Африке бы заработали как у меня.
Значит что то сделано не так))
>>Чем? Только не говорите про объем памяти, в моем случае это мизер по сравнению с прицепленным багажом библиотек Лазаруса.
Компилятор использует наиболее оптимальную разрядность переменных для имеющейся архитектуры
>>integer всегда.
>>LongInt всегда.
Странные какието варианты. Фиксированная повышеная разрядность там где это обосновано надо (таких мест не так много), в остальном integer.
Также хорошим тоном будет юзать свой тип данных, который одним движением руки можно сделать или integer или LongInt, без правки кучи захардкоженых integer\LongInt
Значит что то сделано не так))
>>Чем? Только не говорите про объем памяти, в моем случае это мизер по сравнению с прицепленным багажом библиотек Лазаруса.
Компилятор использует наиболее оптимальную разрядность переменных для имеющейся архитектуры
>>integer всегда.
>>LongInt всегда.
Странные какието варианты. Фиксированная повышеная разрядность там где это обосновано надо (таких мест не так много), в остальном integer.
Также хорошим тоном будет юзать свой тип данных, который одним движением руки можно сделать или integer или LongInt, без правки кучи захардкоженых integer\LongInt
zub писал(а):Странные какието варианты. Фиксированная повышеная разрядность там где это обосновано надо (таких мест не так много), в остальном integer.
Ок. Варианты теже, подправил название, добавив "при отсутствии строгих требований к разрядности".
zub писал(а):Компилятор использует наиболее оптимальную разрядность переменных для имеющейся архитектуры
Т.е. на 16-битных вредно ставить LongInt? А что будет плохого?
zub писал(а):Также хорошим тоном будет юзать свой тип данных, который одним движением руки можно сделать или integer или LongInt
Ок, добавил с ответы
>>Т.е. на 16-битных вредно ставить LongInt? А что будет плохого?
А что будет хорошего от повсеместной обработки 32 битных данных на 16 битных регистрах? там где надо и где не надо?
Будет медленно
А что будет хорошего от повсеместной обработки 32 битных данных на 16 битных регистрах? там где надо и где не надо?
Будет медленно
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
zub писал(а):Какие могут проблемы?
это обсуждалось на форуме.
>>это обсуждалось на форуме.
Ссылку или в двух словах?
Ссылку или в двух словах?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
zub, есть модули, где integer слишком малой разрядности и если случайно (или специально) подать туда число с большей разрядностью, то прога сыпанется. К тому же, integer это не встроенный тип, а значит может быть переопределен в любой момент.
Это какието дллки из времен дос\win16? Подправить хидеры и всё станет нормально.
Проблема полностью надуманая. Используй внутри программы "оптимальные" типы вроде INTEGER наздоровье, наружу выдавай "фиксированый" тип вроде LONGINT (или не выдавай, если не планируются другие архитектуры\компиляторы).
>>К тому же, integer это не встроенный тип, а значит может быть переопределен в любой момент.
Так и задумано, и переопределяется это не когда пятки чешутся, а когда требуется для конкретной архитектуры
Проблема полностью надуманая. Используй внутри программы "оптимальные" типы вроде INTEGER наздоровье, наружу выдавай "фиксированый" тип вроде LONGINT (или не выдавай, если не планируются другие архитектуры\компиляторы).
>>К тому же, integer это не встроенный тип, а значит может быть переопределен в любой момент.
Так и задумано, и переопределяется это не когда пятки чешутся, а когда требуется для конкретной архитектуры
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
zub, так то оно так.. но ведь у некоторых руки чешутся...
-
SAK
- постоялец
- Сообщения: 158
- Зарегистрирован: 17.02.2006 23:45:14
- Откуда: Тим
- Контактная информация:
Лекс Айрин писал(а):К тому же, integer это не встроенный тип, а значит может быть переопределен в любой момент.
Что помешает чешущимся рукам переопределить LongInt?
Код: Выделить всё
type
myReal = Real;
Real = LongInt;
LongInt = myReal;
var
r: real;
i: LongInt;
Когда руки чешутся надо противозудными средствами пользоваться или отрубать (руки).
