Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Почему в Си нет особого правила при сравнении signed и unsigned типов, ну типа если значение в signed типе отрицательно, то он полюбасу будет меньше любого unsigned значения? А то говно какое-то.
(нет, я понимаю почему так происходит, но все равно говно)
Потому что тип - это абстракция, процессор сравнивает байты, слова, двойные слова.
есть разные инструкции - сравнить два знаковых и два беззнаковых числа. В процессорах, я думаю, нету операций смешанных сравнений.
Ну и я думаю это одно из следствий статической типизации: типа и не предполагается, что будут сравниваться данные разных типов. Ну и действительно: зачем? Что может заставить сравнивать число, которое заведомо положительное с заведомо отрицательным? Как можно сравнить утку с кошкой? Квадрат с кругом? Разве что только по площади\объему, но площадь\объем - это тоже отдельный тип.
То есть сравнение данных разных типов - говнокод, и, наверное багор (я хз смысл этого слова).
Знаковый размер и знаковый индекс - это единственно правильное решение в дизайне вектора, например. То, что сделали крестоябляди - это говно, о котором они сами пожалели.
У растоблядей тоже беззнаковый дерьмотип, но там не получится проебать выход за пределы при касте.
guest # 0
YpaHeLI_ # 0
есть разные инструкции - сравнить два знаковых и два беззнаковых числа. В процессорах, я думаю, нету операций смешанных сравнений.
Ну и я думаю это одно из следствий статической типизации: типа и не предполагается, что будут сравниваться данные разных типов. Ну и действительно: зачем? Что может заставить сравнивать число, которое заведомо положительное с заведомо отрицательным? Как можно сравнить утку с кошкой? Квадрат с кругом? Разве что только по площади\объему, но площадь\объем - это тоже отдельный тип.
То есть сравнение данных разных типов - говнокод, и, наверное багор (я хз смысл этого слова).
bormand # 0 ⇈
В процессоре много чего нету. Что не мешает конпелятору составлять нужную операцию из нескольких.
В данном случае можно было бы трактовать s > u как s >= 0 && s > u. Именно это программист обычно и имеет в виду перед тем как наступить на грабли.
YpaHeLI_ # 0 ⇈
Читай мой второй абзац.
bormand # 0 ⇈
Иначе конфликты неизбежны: в одной либе сделали координату как int, в другой как uint, а ты сиди и ебись теперь.
Desktop # 0 ⇈
MAPTbIwKA # 0 ⇈
За всё нужно платить
Desktop # 0 ⇈
впрочем, я уже когда-то бугуртил по этому поводу
bormand # 0 ⇈
-5 -4 -3 -2 -1
MAPTbIwKA # 0 ⇈
Учитель говорит: ну вот еще один придет, и вообще никого не останется
bormand # 0 ⇈
MAPTbIwKA # 0 ⇈
*tulpenmanie
Desktop # 0 ⇈
MAPTbIwKA # 0 ⇈
Прелесть в том, что фьючерсов (или как там называется право на покупку) на тюльпаны было продано больше, чем физически можно вырастить тюльпанов
3_dar # 0 ⇈
bormand # 0 ⇈
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
hormand # 0 ⇈
MAPTbIwKA # 0 ⇈
Fike # 0 ⇈
Fike # 0 ⇈
TarasB # 0 ⇈
У растоблядей тоже беззнаковый дерьмотип, но там не получится проебать выход за пределы при касте.
MAPTbIwKA # 0 ⇈
MAPTbIwKA # 0 ⇈
bormand # 0
Ну вернее для int'ов то оно есть (потому что в long кастуют), а вот long и unsigned long там тупо нельзя сравнить.
TarasB # 0 ⇈
MAPTbIwKA # 0 ⇈
bormand # 0
hormand # 0
Wir werden angegriffen! Alle posten besetzen. Ich wederchole: wir werden angegriffen!
hormand # 0
Wir werden angegriffen! Alle posten besetzen. Ich wederchole: wir werden angegriffen!