Если вы зададите себе этот вопрос, значит, вам следует пойти легким путем: сделать счетчик unsigned int
.
Способ обработки ограничения очень зависит от того, для чего используется этот счетчик. У меня такое ощущение, что это не используется для каких-то действительно интересных вещей, поэтому ваш вопрос вроде спорный. Какой бы выбор вы ни сделали, он все равно будет работать правильно.
С другой стороны, если этот счетчик используется как real , вы должны спросить пользователя этого счетчика, как правильно действовать: у обоих есть свои плюсы и минусы (либо счетчик возвращается во времени, либо останавливается) так что ваш пользователь рискует быть удивленным.
Вы забыли упомянуть другие альтернативы: прекратить свою программу. Или удалите ограничение и используйте некоторую форму больших целых чисел (например, GMP lib), но это звучит излишне.
Обратите внимание, что DNS решает обернуть серийный номер в 2 ^ 32. Это делает его пригодным для использования навсегда. Предполагается, что пользователи счетчика обнаружат переполнение. RFC 1982