У меня есть большая кодовая база, которую мне нужно дезинфицировать и натолкнулась на какой-то код, подобный тому, который приведен ниже, о котором GCC предупреждает меня, и это не имеет никакого смысла для меня.Кастинг аргумента float для unsigned, когда функция принимает подписанный int
void SetValue(int32_t value); // implementation not important
int main()
{
//...
float val = -10.0f; // real value comes from a function, but can be negative
//...
SetValue(uint32_t(val)); // huh?
//...
}
Любая причина, чтобы заставить актеров к unsigned int
, если функция принимает signed int
?
Это происходит несколько раз по всей кодовой базе, поэтому это не один случай.
Это просто ошибка или есть какой-то трюк, который мне не хватает?
РЕДАКТИРОВАТЬ: Для очистки GCC дезинфицирующее средство выбрасывает runtime error: value -10 is outside the range of representable values of type 'unsigned int'
.
Выглядит скорее как ошибка для меня, возможно, просто положить туда, чтобы скрыть предупреждение. – Marco
Уточните с помощью [MCVE] - и точное сообщение об утере! –