|
|
|
|
|
by kazinator
2945 days ago
|
|
Integer overflow is certainly not undefined for this reason. It's undefined because in the majority of situations, it is the result of a bug, and the actual value (such as a wrapped value) is unexpected and causes a problem. For instance, oh, the Y2038 problem with 32 bit time_t. |
|
1. If it's a bug, it should overflow or crash (implementation defined, not undefined), or do what Rust does, crash on -o0 (or, if it's illegal to change defined behavior based on optimization level, create a --crash-on-overflow flag) and overflow on everything else.
2. There is plenty of code where it's intentional (such as the infamous if(a+5<a)).