- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(void)
{
uint32_t uint32max = UINT32_MAX;
int32_t int32_minus_one = -1;
printf("uint32_max = %" PRIu32 "\n", uint32max);
printf("int32_minus_one = %" PRIi32 "\n", int32_minus_one);
if (uint32max > int32_minus_one)
{
puts("uint32max > int32_minus_one");
}
else if (uint32max < int32_minus_one)
{
puts("uint32max < int32_minus_one");
}
else
{
puts("uint32max == int32_minus_one");
}
return EXIT_SUCCESS;
}
Почему в Си нет особого правила при сравнении signed и unsigned типов, ну типа если значение в signed типе отрицательно, то он полюбасу будет меньше любого unsigned значения? А то говно какое-то.
(нет, я понимаю почему так происходит, но все равно говно)
guest6 15.02.2021 12:37 # 0
YpaHeLI_ 15.02.2021 13:51 # +1
есть разные инструкции - сравнить два знаковых и два беззнаковых числа. В процессорах, я думаю, нету операций смешанных сравнений.
Ну и я думаю это одно из следствий статической типизации: типа и не предполагается, что будут сравниваться данные разных типов. Ну и действительно: зачем? Что может заставить сравнивать число, которое заведомо положительное с заведомо отрицательным? Как можно сравнить утку с кошкой? Квадрат с кругом? Разве что только по площади\объему, но площадь\объем - это тоже отдельный тип.
То есть сравнение данных разных типов - говнокод, и, наверное багор (я хз смысл этого слова).
bormand 15.02.2021 14:09 # +1
В процессоре много чего нету. Что не мешает конпелятору составлять нужную операцию из нескольких.
В данном случае можно было бы трактовать s > u как s >= 0 && s > u. Именно это программист обычно и имеет в виду перед тем как наступить на грабли.
YpaHeLI_ 15.02.2021 14:11 # 0
Читай мой второй абзац.
bormand 15.02.2021 14:19 # 0
Иначе конфликты неизбежны: в одной либе сделали координату как int, в другой как uint, а ты сиди и ебись теперь.
Desktop 15.02.2021 14:30 # 0
MAPTbIwKA 15.02.2021 15:34 # 0
За всё нужно платить
Desktop 15.02.2021 18:40 # 0
впрочем, я уже когда-то бугуртил по этому поводу
bormand 15.02.2021 18:42 # 0
-5 -4 -3 -2 -1
MAPTbIwKA 15.02.2021 18:43 # 0
Учитель говорит: ну вот еще один придет, и вообще никого не останется
bormand 15.02.2021 18:44 # 0
MAPTbIwKA 15.02.2021 18:45 # 0
*tulpenmanie
Desktop 15.02.2021 18:46 # 0
MAPTbIwKA 15.02.2021 18:49 # 0
Прелесть в том, что фьючерсов (или как там называется право на покупку) на тюльпаны было продано больше, чем физически можно вырастить тюльпанов
3_dar 15.02.2021 19:18 # +1
bormand 15.02.2021 19:43 # 0
bootcamp_dropout 15.02.2021 19:50 # +2
guest6 15.02.2021 19:59 # 0
hormand 15.02.2021 23:59 # 0
MAPTbIwKA 18.02.2021 00:36 # 0
Fike 18.02.2021 00:44 # 0
Fike 18.02.2021 01:21 # 0
TarasB 18.02.2021 00:17 # 0
У растоблядей тоже беззнаковый дерьмотип, но там не получится проебать выход за пределы при касте.
MAPTbIwKA 18.02.2021 00:33 # 0
MAPTbIwKA 15.02.2021 15:24 # 0
bormand 15.02.2021 13:52 # 0
Ну вернее для int'ов то оно есть (потому что в long кастуют), а вот long и unsigned long там тупо нельзя сравнить.
TarasB 18.02.2021 00:17 # 0
MAPTbIwKA 18.02.2021 00:28 # 0
bormand 15.02.2021 14:00 # 0
hormand 15.02.2021 19:20 # 0
Wir werden angegriffen! Alle posten besetzen. Ich wederchole: wir werden angegriffen!
hormand 15.02.2021 19:21 # 0
Wir werden angegriffen! Alle posten besetzen. Ich wederchole: wir werden angegriffen!