&gt; It&#x27;s actually reasonable to have a platform that e.g. gives you 2&#x27;s complement arithmetic or defines the result of shifts, or allows unaligned access, because mainstream computer hardware does provide those guarantee.<p>ARM, PPC, and x86 all define the results of some shifts differently (for shift amounts &gt;32UL) and behave differently with unaligned pointers (only x86 tends to accept them). Which mainstream hardware are you using?<p>Adding magical nice semantics to your language is another way to hide bugs in your program. Try building with ubsan and doing runtime testing instead.