You can implement C in completely different ways. For example, I like that signed overflow is UB because it is trivial to catch it, while unsigned wraparound - while defined - leads to extremely difficult to find bugs.
replies(4):
But checking for signed overflow is also simply with C23: https://godbolt.org/z/ebKejW9ao