integer или LongInt

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

При выборе между integer или LongInt при отсутствии строгих требований к разрядности, я использую

1. integer всегда.
10
83%
2. integer, потому что была проблема с LongInt на специфической платформе (укажу с теме, может быть).
0
Голосов нет
3. LongInt всегда.
0
Голосов нет
4. LongInt, потому что была проблема с integer на специфической платформе (укажу с теме, может быть).
0
Голосов нет
5. Свой тип данных, который одним движением руки можно сделать или integer или LongInt
2
17%
 
Всего голосов : 12

integer или LongInt

Сообщение resident » 10.05.2016 12:59:05

Как-то задумался, а не будет ли проблем с integer? А то пишу его везде. Подумываю перейти на LongInt.
Последний раз редактировалось resident 10.05.2016 15:10:38, всего редактировалось 2 раз(а).
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: integer или LongInt

Сообщение ssadragon » 10.05.2016 13:20:21

Интересный случай
objpas.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: integer или LongInt

Сообщение zub » 10.05.2016 13:53:26

Какие могут проблемы?
На ум приходит только какойнить бинарный формат куда естественно надо сохранять платформенно независимые типы. Внутри программы лучше использовать какраз integer
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: integer или LongInt

Сообщение resident » 10.05.2016 14:12:20

ssadragon писал(а):Интересный случай

Да, на шесть строк выше выделенной уже другая картина. Т.е. чем будет являться integer неизвестно уже сейчас, а что будет завтра? Да и функции к примеру IntToStr завязаны на LongInt.

zub писал(а):На ум приходит только какойнить бинарный формат куда естественно надо сохранять платформенно независимые типы.

А мне на ум приходит тема про численные методы, поднимавшаяся на днях на форуме. Так вот я уже сомневаюсь, что мои функции будут везде работать. А делал бы на LongInt, то и в Африке бы заработали как у меня.

zub писал(а):Внутри программы лучше использовать какраз integer

Чем? Только не говорите про объем памяти, в моем случае это мизер по сравнению с прицепленным багажом библиотек Лазаруса.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: integer или LongInt

Сообщение zub » 10.05.2016 14:50:48

>>Так вот я уже сомневаюсь, что мои функции будут везде работать. А делал бы на LongInt, то и в Африке бы заработали как у меня.
Значит что то сделано не так))

>>Чем? Только не говорите про объем памяти, в моем случае это мизер по сравнению с прицепленным багажом библиотек Лазаруса.
Компилятор использует наиболее оптимальную разрядность переменных для имеющейся архитектуры

>>integer всегда.
>>LongInt всегда.
Странные какието варианты. Фиксированная повышеная разрядность там где это обосновано надо (таких мест не так много), в остальном integer.

Также хорошим тоном будет юзать свой тип данных, который одним движением руки можно сделать или integer или LongInt, без правки кучи захардкоженых integer\LongInt
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: integer или LongInt

Сообщение resident » 10.05.2016 15:10:58

zub писал(а):Странные какието варианты. Фиксированная повышеная разрядность там где это обосновано надо (таких мест не так много), в остальном integer.

Ок. Варианты теже, подправил название, добавив "при отсутствии строгих требований к разрядности".

zub писал(а):Компилятор использует наиболее оптимальную разрядность переменных для имеющейся архитектуры

Т.е. на 16-битных вредно ставить LongInt? А что будет плохого?

zub писал(а):Также хорошим тоном будет юзать свой тип данных, который одним движением руки можно сделать или integer или LongInt

Ок, добавил с ответы
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: integer или LongInt

Сообщение zub » 10.05.2016 15:41:00

>>Т.е. на 16-битных вредно ставить LongInt? А что будет плохого?
А что будет хорошего от повсеместной обработки 32 битных данных на 16 битных регистрах? там где надо и где не надо?
Будет медленно
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: integer или LongInt

Сообщение Лекс Айрин » 10.05.2016 17:29:22

zub писал(а):Какие могут проблемы?


это обсуждалось на форуме.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: integer или LongInt

Сообщение zub » 11.05.2016 13:40:56

>>это обсуждалось на форуме.
Ссылку или в двух словах?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: integer или LongInt

Сообщение Лекс Айрин » 11.05.2016 14:25:04

zub, есть модули, где integer слишком малой разрядности и если случайно (или специально) подать туда число с большей разрядностью, то прога сыпанется. К тому же, integer это не встроенный тип, а значит может быть переопределен в любой момент.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: integer или LongInt

Сообщение zub » 11.05.2016 15:26:09

Это какието дллки из времен дос\win16? Подправить хидеры и всё станет нормально.
Проблема полностью надуманая. Используй внутри программы "оптимальные" типы вроде INTEGER наздоровье, наружу выдавай "фиксированый" тип вроде LONGINT (или не выдавай, если не планируются другие архитектуры\компиляторы).

>>К тому же, integer это не встроенный тип, а значит может быть переопределен в любой момент.
Так и задумано, и переопределяется это не когда пятки чешутся, а когда требуется для конкретной архитектуры
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: integer или LongInt

Сообщение Лекс Айрин » 11.05.2016 15:59:22

zub, так то оно так.. но ведь у некоторых руки чешутся...
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: integer или LongInt

Сообщение SAK » 12.05.2016 16:52:13

Лекс Айрин писал(а):К тому же, integer это не встроенный тип, а значит может быть переопределен в любой момент.

Что помешает чешущимся рукам переопределить LongInt?
Код: Выделить всё
type
   myReal = Real;
   Real = LongInt;
   LongInt = myReal;

var
   r: real;
   i: LongInt;

Когда руки чешутся надо противозудными средствами пользоваться или отрубать (руки).
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 229

Рейтинг@Mail.ru