Pisząc programy w języku C, zapominamy czasem, iż zarówno sam język, jak i kompilatory mogą zachować się nieprzewidywalnie, co z kolei może znacznie wpłynąć na poprawność wykonania skompilowanego programu. Część takich zachowań została opisana w standardzie języka, jednakże nie zawsze zachowania te są dokładnie zdefiniowane.