Re:A Guide to Undefined Behavior in C and C++ (2010)
by Rusky on Sunday March 16, 2025 @08:55PM
(#43384109)
I believe they only standardized the two's-complement representation (so casts to unsigned have a more specific behavior, for example) but they did not make overflow defined.
[ Parent
| on HN ]
Re:A Guide to Undefined Behavior in C and C++ (2010)
by LegionMammal978 on Sunday March 16, 2025 @09:57PM
(#43384481)
Yeah, signed integer overflow is as UB as ever. I've heard the primary reason for it is to avoid the possibility of wraparound on 'for (int i = 0; i < length; i++)' loops where the 'length' is bigger than an int. (Of course, the more straightforward option would be to use proper types like size_t for all your indices, but it's a classic tradition to use nothing but char and int, and people judge compilers based on existing code.)
Re:A Guide to Undefined Behavior in C and C++ (2010)
by ForTheKidz on Monday March 17, 2025 @01:07AM
(#43385366)
ptrdiff_t is also useful in this case if signed semantics are desired.
Re:A Guide to Undefined Behavior in C and C++ (2010)
by vlovich123 on Monday March 17, 2025 @01:33AM
(#43385460)
> I've heard the primary reason for it is to avoid the possibility of wraparound on
Making it UB doesn’t fix that in any way that I can think of.
Re:A Guide to Undefined Behavior in C and C++ (2010)
by anttihaapala on Monday March 17, 2025 @02:41AM
(#43385740)
What it means is that since i as the variable is monotonically increasing, an array indexing operation that is in the loop body can be replaced with an incrementing pointer instead, which eliminates quite a lot of code. An example here: https://pvs-studio.com/en/blog/posts/cpp/0374/