Я пытаюсь обнаружить переполнение при добавлении подписанного смещения к беззнаковой позиции
uint32 position;
int32 offset; // it could be negative
uint32 position = position+offset;
Как я могу проверить, является ли результат переполнением или недостаточным переполнением?
Я подумал о некрасиво, но не уверен в его правильности.
смещение <0 && положение + смещение> = положение
смещение> 0 && положение + смещение <= положение
И мне также интересно, есть ли более элегантный способ сделать это.
Обновление:
Какое лучшее решение, если смещение велико?
uint32 position;
long offset; // it could be negative
uint32 position = position+offset;