- 1
- 2
- 3
- 4
- 5
- 6
- 7
var
u: longint;
begin
u := $-80000000;
writeln(u);
end.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+82
var
u: longint;
begin
u := $-80000000;
writeln(u);
end.
Жуквери в Дельфи7. Компилируется.
---
Это я к тому, что это что угодно, но не говнокод.
http://ideone.com/OnUqQz
А вот в Дельфи-7 компилируется, но даёт не то.
Вопрос только, как задать нужную мне константу в 16ичном виде?
Ой, нет, не очевидно. Кстати, в си тоже такой баг - пишем -0x80000000, а он выдает просто 0x80000000:
http://ideone.com/i0lVWG
-2147483648 это 0x80000000, 2147483647 это 0x7FFFFFFF. Числа, лежащие за пределами этого диапазона (например +2147483648) в 32х битном знаковом инте тупо не представимы.
P.S. Конечно же тебе хочется 2147483648, но оно, к сожалению не вошло в диапазон из-за злоебучего нуля, из-за которого положительных чисел влезло на 1 меньше, чем отрицательных.
первое входит в диапазон int, второе не входит
Второе с переполнением, не то.
То есть нормального способа задать эту константу в Дельфи нету.
The representations of integral types shall define values by use of a pure binary numeration system.
[Example: this International Standard permits 2’s complement, 1’s complement and signed magnitude representations for integral types. ]
If the sign bit is one, the value shall be modified in one of the following ways:
— the corresponding value with sign bit 0 is negated (sign and magnitude);
— the sign bit has the value −(2 N ) (two’s complement);
— the sign bit has the value −(2 N − 1) (ones’ complement).
Which of these applies is implementation-defined.
А еще там допустимы padding биты, и есть требование, чтобы представления signed'ов и unsigned'ов для положительных чисел, которые можно записать signed'ом совпадали.
P.S. Кстати в sign-and-magnitude будет джва нуля, зато Тарас будет доволен - такие инты абсолютно симметричны.
нам еще на 1 семестре рассказывали про модифицированные обратные и дополнительные - когда под знак выделяются джва разряда, что позволяет отлавливать underflow и overflow
А вот хренли верблюду понадобился лишний бит - придумать не могу.
верблюд - это перл чтоли?
а чё, на армах нет флага переполнения?
потому что его проще и дешевле выполнить в АЛУ, чем вводить ограничения по его неиспользованию
тем не менее, в стандарте С/С++ никто не требует его наличия
равно как и никто в стандарте не предоставляет способа получения его состояния
только ассемблер, только хардкор
либо специфические ловушки, что не факт что вообще практично
нехер закладываться на ассемблер x86
когда уже версию дельфей для андроида сделают?
Почитал по ссылке. Понял по значению, что не для гарбедж коллектора это используется
Кстати, -$-80000000 почему-то выдаёт такой же результат, а -$80000000 не компилируется.
Создать именованные константы - MIN_BYTE, MIN_WORD, MIN_INT, MIN_LONGINT. И юзать их.
https://ideone.com/4cDkMA
Да и потом это не слишком очевидно. Вдруг кому-нибудь нужно именно 2 в 31-й степени вне зависимости от размера типа longint в данной версии компилятора?
Ой, точно.
Q: Что такое постоянная Б. Тараса?
A: Это число не равное нулю, которое не меняется при смене знака.
Я куплю тебе калач.
Интересно почему не @торасег.
С одной стороны бажность багланда меня не удивляет, но всё-равно плюсану.
FPC и GPC такой код отвергают, потому что в них жуквери нет.
https://ideone.com/Gg5rzC
он и <% ... %> умеет
аналог крестоблядского 0x
u = 0x; в крестах не скомпилируется
Это дельфиний чисто баг. Кстати, по аналогии: 0x в билдере компилируется?
Ну то есть те кому этих самых долларов не хватает.
Люди за еду пишут, а доллары видят только в своем коде.
Из них все пишут за еду, кроме некоторых башистов, работающими за круглую сумму админами на удаленке. Ну а Хацкелстам еда не нужна. Им достаточно Борща и одобрение мамки.
им нужна еда только когда они пойдут в туалет
for(₪i = 0;₪i < 10;₪i++);
卐res .= 卐i;
}
Хава нэранэна, хава нэранэна, хава нэранэна вэ нисмэха!
Уру ахим бэ лэв самэах, уру ахим бэ лэв самэах, уру ахим бэ лэв самэах!
Кстати в форте 2012 есть пасцалеликие констанции с $, версия gforth на tio.run имеет баг, что $ воспринимается как $0, в версии gforth на ideone такого бага уже нет.