|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.05.2019, 21:02 | #1 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Диапазоны целочисленных констант
Всем привет. Давненько не виделись
Подскажите, почему так? Код Код:
Цитата:
Код:
Цитата:
Код:
|
||
02.05.2019, 21:05 | #2 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Он что, типа по умолчанию целочисленные константы считает знакопеременными?
Ваще логика странная Код:
Цитата:
Последний раз редактировалось Sibedir; 02.05.2019 в 21:07. |
|
02.05.2019, 21:41 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Именованные не типизированные целочисленные константы имеют тип longint или int64, если выход за диапазон longint-а. Надо полагать это имеет отношение и к не именованным.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
02.05.2019, 21:46 | #4 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Ну получается, что для не именованых это только longint (см. пост 2).
|
02.05.2019, 21:53 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
там же в знаковый int64 присваивается longint(-2147483648) так, что так и должно быть.
i := UInt32(1 shl 31) // 2147483648 - тоже понятно - приведение к беззнаковому а тот i := 1 shl 31 из #1 и ошибка пока не догоняю ) зы, там ошибка присвоения отрицательного беззнаковому типу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 02.05.2019 в 22:05. |
03.05.2019, 03:05 | #6 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,894
|
Это уже весьма старый глюк папаши Борланда.
|
03.05.2019, 07:43 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А чего глючного? Все согласно типа операнда и битового сдвига. А арифметического и циклического сдвига в делфи нет
add мало того, Byte(1) shl 31 все равно вернет -2147483648, то есть Byte перед shl повышается до longint.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 03.05.2019 в 08:41. |
03.05.2019, 16:21 | #8 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Ну ладно, в принципе понятно.
Спасибо. Как всегда экономите кучу времени неучам, которые типа программируют. Разбогатею - отблагодарю |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задачка. Диапазоны | VladimirAvakov | Помощь студентам | 2 | 14.04.2016 00:54 |
диапазоны СУММЕСЛИ() | Khalid | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 12.03.2015 10:38 |
Диапазоны в VBA | Outed | Microsoft Office Excel | 4 | 17.02.2015 08:38 |
Разбить на диапазоны! | Seregakz | Общие вопросы Delphi | 3 | 21.09.2014 16:49 |
Как просуммировать диапазоны? | Алексей11111 | Microsoft Office Excel | 7 | 28.11.2009 18:19 |