気になったので Wandbox で調べました。
int main() { int32_t s = -1; uint32_t u = static_cast<uint32_t>(s); std::cout << u << std::endl; // 4294967295 }
int main() { int32_t s = -2; uint32_t u = static_cast<uint32_t>(s); std::cout << u << std::endl; // 4294967294 }
int main() { int32_t s = -2147483648; uint32_t u = static_cast<uint32_t>(s); std::cout << u << std::endl; // 2147483648 }