It looks like they are using PHP/MySQL/Javascript/Flash, with only MySQL having any explicit types.
Even so, an error is often preferable to overflow, which is usually undefined behavior and could lead to a duplicate primary key anyways if it wraps to the first game.
A better question is "why 32-bit over 64-bit", but the site dates back to 2005 where that was the norm and the question has the same issues.
Your reserved bottom range is a perfectly good solution. But rolling into negatives seems fine, too.
for (int x = 0; x >= 0; x++)
making it an infinite loop, because it assumes "x++" can't overflow.[1]https://stackoverflow.com/questions/18195715/why-is-unsigned...
The -fstrict-overflow option is enabled at levels -O2, -O3, -Os.
In other words, basically every program that you're using is compiled with that option enabled. (Release builds typically use -O2, sometimes even -O3.)They do it, so they can simplify things like "x < x+1" to "true".
Also, you have problems whenever you compare against signed ints.
It was a mistake to use them for sizes in C++. Google code style requires using int64 to count sizes instead of uint32 for good reasons.