Компилятор предупреждает вас, что int
может содержать значения, которые не помещаются в unsigned char
.
Если вы абсолютно уверены , что в этом случае он всегда будет соответствовать, вы можете сообщить об этом компилятору с помощью static_cast
c = static_cast<unsigned char>(i);
Компилятор будет доверять вам в этом (и это ваша вина, если это не так).