5 ms·
What does he actually mean by this? I've dabbled in C's specification and weird behaviour on multiple occasions but I have no clue what he is referring to.
by atiedebee 1y ago
What does he actually mean by this? I've dabbled in C's specification and weird behaviour on multiple occasions but I have no clue what he is referring to.
- pjmlp 1y agoIt has to do with the underflow and overflow rules, they are different between signed and unsigned integers, in regards to optimization freedom by the compilers.
- spacechild1 1y agoAlso, 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)
- atiedebee 1y agoYea 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
- spacechild1 1y agoFirst, 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.