MiddleКодИногдаЕщё не отвечали
Что выведет это сравнение знакового и беззнакового?
Предскажите, что выведет это сравнение.
int i = -1;
unsigned u = 1;
std::cout << (i < u);
Определите вывод и объясните.
0 (ложь). В смешанном сравнении int преобразуется к unsigned, поэтому -1 становится огромным значением (UINT_MAX), которое не меньше 1. Эта ловушка обычных арифметических преобразований ломает и for (size_t i = v.size() - 1; i >= 0; --i).
- ✗Рассуждать об операндах как о математических целых, игнорируя преобразование
- ✗Считать, что беззнаковый операнд преобразуется к знаковому
- ✗Писать обратные циклы на
size_t, которые никогда не завершаются
- →Каковы обычные арифметические преобразования для смешанных знаковых/беззнаковых операндов?
- →Почему
for (size_t i = n - 1; i >= 0; --i)зацикливается навсегда?