Вы ошибаетесь в своем убеждении, что максимальное число для unsigned int равно 65535. Этого не было для большинства компиляторов, поскольку, возможно, в первые дни Windows 95, когда у нас были 16-разрядные процессоры.
Стандарты НЕ определяют размер любого интегрального типа; они определяют только отношение размеров друг к другу. (long long> = long> = int> = short> = char ... и т. д.) Фактические размеры, хотя и невероятно распространенные и согласованные, определяются реализацией вашего компилятора и, как правило, определяются платформой.
Это не означает, что большинство int использует размер слова на процессоре; который сегодня часто составляет 32 бит или 64 бит.
Вы можете проверить «почему», взяв sizeof (int); затем поднять 2 до вычитания мощности 1, и у вас есть свой ответ на максимальный ввод ...
Лучшим способом будет #include <limits.h>
или #include <climits>
и использовать значения, которые он определяет. В C++
вы также можете использовать std::numeric_limits<unsigned int>::max()
.
Если у вас есть 2 байта 'неподписанные int's, максимальное число в' беззнакового int' определенно больше, чем 65535. – wolfPack88
Как вы «знаете», что самый большой «unsigned int» - 65535? –