Это неопределенное поведение?
unsigned int size = 0;
size -= 1;
Это неопределенное поведение?
unsigned int size = 0;
size -= 1;
Целые числа без знака имеют четко определенное поведение для всех арифметических операций; в частности, они реализуют «художественную обработку по модулю 2 N», где N - количество битов значения в типе. Итак, -1
на самом деле 2 N 1.
unsigned int x; for (x = SOME_POSITIVE_VALUE ; x >= 0 ; --x);
- бесконечный цикл?
- person Iharob Al Asimi; 11.01.2015
unsigned
целые числа равны >= 0
.
- person Iwillnotexist Idonotexist; 11.01.2015
x
, x >= 0
всегда верно, да.
- person Kerrek SB; 11.01.2015
undefined behavior
, у меня нет копии стандарта c, и, поскольку я живу в Венесуэле, не могу себе этого позволить, особенно в настоящее время.
- person Iharob Al Asimi; 11.01.2015
int i = INT_MAX + 1;
UB. Но после @ 5gon12eder мне нравится stackoverflow.com/questions/18195715/ - person Weather Vane   schedule 11.01.2015int
, могло бы привести к неопределенному поведению, но я не думаю, что это верно в отношении уменьшения. Если значение без знака, меньшееint
, будет повышено доint
, этоint
сможет без труда представлять как 0, так и -1; приведение подписанного значения -1 к беззнаковому типу любого размера требуется для получения значения, которое при преобразовании в соответствующий большой тип, увеличении и обратном приведении даст ноль. - person supercat   schedule 24.06.2015