The practical effect of most implementations is that the value wraps in the exact same way that integer overflows occur. This is only a side effect of implementation details though, and is not guaranteed behavior in C. The frequency with which projects rely on this behavior does suggest it is unlikely to change wherever it exists today, but it's still just an implementation detail.
It is actually guaranteed to behave this way for unsigned types. For signed types, overflow is UB, though on any system you'll encounter today it will probably either wrap around (2's complement) or saturate (most DSPs?).