How I think about C99 strict aliasing rules
It really seems like the compiler writers have gone insane in the last decade or so.  Any reasonable person would look at the standard and conclude the intent is to describe what is required to write super-portable programs.  Yes, you could have 1s-complement or sign-magnitude integers, so you can&#x27;t rely on signed overflow for portable code.  Yes, you could have separate address spaces for floating point and integers, so you can&#x27;t rely on cross-type pointer casts or address arithmetic for portable code.<p>But the compiler writers are using &quot;undefined behavior&quot; as justification to break code on machines that don&#x27;t have weird address spaces and don&#x27;t use 1-s complement integers.<p>So the result... anyone who wants C&#x2F;C++ to just be a high level assembler is going to need to do all their arithmetic with unsigned and all their pointers as char.  Say goodbye to readability or type safety.