Еще один вопрос с подвохом с IT-собеседований. Если бы вы сказали 300, а
i был объявлен как
int, вы были бы правы. Но поскольку
i объявлен как
unsigned char, правильный ответ – зацикливание (бесконечный цикл).
Объясняем. Выражение
2 * half_limit будет повышаться до
int (на основе
правил преобразования C++) и заимеет значение 300. Но так как
i – это
unsigned char, он пересматривается по 8-битному значению, которое после достижения 255 будет переполняться, поэтому вернется к 0, и цикл будет продолжаться вечно.