According to the C++23 standard, what is the output of this program?
#include <iostream>
#include <limits>
int main() {
unsigned int i = std::numeric_limits<unsigned int>::max();
std::cout << ++i;
}What happens when an unsigned integer overflows? Is it well-defined?
0
Unsigned integers have well-defined behaviour when they overflow. When you go one above the largest representable unsigned int, you end up back at zero.
According to §[basic.fundamental]¶2 in the C++ standard:
The range of representable values for the unsigned type is 0 to 2N − 1 (inclusive); arithmetic for the unsigned type is performed modulo 2N.