Escolar Documentos
Profissional Documentos
Cultura Documentos
Casos de Undefined Behaviour
Casos de Undefined Behaviour
Uso de variáveis não inicializadas: nunca esqueça de inicializar variáveis antes de acessá-
las, porque não existe a garantia de que o compilador fará isso por você.
Estouro de um número inteiro com sinal: o comportamento do estouro de um inteiro com
sinal em C é indefinido. Ele pode ser zerado, seu valor pode ser mantido, ele pode virar
um número negativo, etc. Tudo depende do compilador e do ambiente de execução,
incluindo a arquitetura do processador. Por este motivo, nunca deixe de validar a
aritmética de números inteiros com sinal.
Rotacionamento de bits: rotacionar os bits de um número inteiro por mais bits do que ele
possui é undefined behavior (por exemplo rotacionar 33 vezes um inteiro de 32 bits), e seu
comportamento pode depender do compilador ou da arquitetura da CPU.
Divisão por zero: o resultado de uma divisão por zero tem comportamento indefinido na
linguagem C. Pode ser gerada uma exceção, o resultado pode ser zero, seu HD pode ser
formatado, ou qualquer outra coisa pode acontecer! :-)
Acesso inválido à memória: erros como o uso de ponteiros não inicializados ou nulos e o
acesso fora dos limites de um vetor tem comportamento indefinido na linguagem C.