У меня есть значение без знака, которое должно пройти через функцию как знаковое значение (это не коснется функции). Когда он выходит, я возвращаю его без знака. Я знаю, что результат приведения к подписанию - это реализация, определенная при переполнении, но могу ли я, по крайней мере, гарантировать, что в итоге я получаю то же значение, когда я его верну (например, с указателями функций)?Передача без знака в подпись и обратно
Пример:
int32_t function_with_default(int32_t a_Default)
{
// Try some stuff
// ...
// Fall back to default
return a_Default;
}
void main()
{
uint32_t input = UINT32_MAX;
uint32_t output = static_cast<uint32_t>(function_with_default(static_cast<int32_t>(input));
// Is is guarenteed to be true?
input == output;
}
у меня есть, что гарантируем для знаковое целое всегда больше или равно, чем целое число без знака в байтах, поэтому никакие данные не должны быть потеряны из-за недостатка места.
Или, наоборот, да, у вас есть эта гарантия, если ваше значение не превышает диапазон того, что вы делаете. – UKMonkey