| >The second appears to be untrue; if you removed the concept of undefined behavior from C, it wouldn't get farther away from the hardware My understanding is that even common CPU instruction sets can have undefined behavior[1]. When C was written, the CPU architectures were more of a Wild West. It might have made sense to leave some parts up to the compiler authors on a particular architecture. >Is that first point actually something that somebody wants? When C was written — absolutely. Portability of C code is almost taken for granted these days. Things were different then. Portability was a big challenge. All that said, this is my non-authoritative understanding of the reasons why it's a thing. Take it with a grain of salt. >At that point, you've given up on having a standard Sure. Just treat C as a family of languages which have a common standardized part. Proprietary compiler extensions are/were common anyway, so that's not an unusual situation. [1] https://www.os2museum.com/wp/undefined-isnt-unpredictable/ |