C · Intermediário · Inglês · Técnico
undefined behavior
Situação em que o padrão C não impõe nenhum requisito ao programa, e o compilador pode gerar qualquer comportamento. Exemplos: overflow de inteiro com sinal e acesso fora dos limites.
Onde usar
Um programa com UB pode funcionar no seu teste e quebrar em outro compilador ou nível de otimização, porque o otimizador assume que UB nunca acontece. Em code review, é o bug mais caro de achar depois.
Em código
int f(int x) {
return x + 1 > x; // UB se x == INT_MAX
}
// com -O2, pode virar return 1Exemplos
That shift is undefined behavior when the count is 32.
Esse shift é undefined behavior quando a contagem é 32.
It works in debug but breaks with -O2, so I suspect undefined behavior.
Funciona em debug mas quebra com -O2, então suspeito de undefined behavior.
Cuidado
Confundir com comportamento definido pela implementação, que varia entre compiladores mas é documentado e previsível.
Sinônimos
UB, comportamento indefinido