Шикарный пример неопределённого поведения в C++:

#include <iostream>

int main() {
    for (int i = 0; i < 4; ++i)
        std::cout << i*1000000000 << std::endl;
    return 0;
}

Живой код на потрогать

Если скомпилировать в gcc -O2, запуск приведёт к зависанию. Если 1000000000 заменить, скажем, на 10, то зависания не будет.

Компилятор видит i*1000000000, понимает, что целочисленного переполнения в int быть не может по определению, соображает, что такое возможно только если i будет меньше 4 и выбрасывает проверку на i < 4 из кода нафиг.

Подглядел у winnie