Hacker News new | ask | show | jobs
by spacechild1 291 days ago
Also, the promotion rules for mixing signed and unsigned numbers are pretty complex. It's very easy to make mistakes, sometimes with catastrophic results (e.g. negative numbers turning into huge positive number)
1 comments

Yea so overflow/underflow are a problem with signed integers, not unsigned ones. Promotion rules might be the only candidate for hidden complexity here I guess
First, there is no integer underflow. Underflow is only possible with floating point numbers.

Second, signed integer overflow is always undefined behavior whereas unsigned integer overflow is ok (= modulo behavior).

The actual issue I was describing is about accidentally converting a negative (signed) integer to an unsigned integer, which completely changes its value. This is not a problem with signed or unsigned integers per se, but rather with the implicit conversions between these types. IMO this should have never been allowed in the first place.