Есть два взгляда на неопределенное поведение. Существует мнение, что его нужно собирать для странного оборудования и других особых случаев, но обычно оно должно вести себя разумно. И есть мнение, что все может случиться. И в зависимости от источника UB некоторые придерживаются разных мнений.
В то время как UB о переполнении, вероятно, был введен для учета аппаратного обеспечения, которое улавливает или насыщает при переполнении и разнице результатов между представлениями, и поэтому в этом случае можно поспорить за первое представление, люди, пишущие оптимизаторы, очень уважительно мнение, что если стандарт не гарантирует чего-то, на самом деле все может произойти, и они пытаются использовать каждую часть свободы для генерации машинного кода, который выполняется быстрее, даже если результат больше не имеет смысла.
Поэтому, когда вы видите неопределенное поведение, предположите, что может случиться что угодно, каким бы разумным не казалось данное поведение.