Comportamento indefinido

Na ciência da computação, comportamento indefinido é um recurso existente em algumas linguagens de programação, notoriamente na linguagem C. Para simplificar a especificação e permitir maior flexibilidade de implementação, as especificações determinam que o resultado de algumas operações é indefinido. Operações que não sejam explicitamente definidas por um padrão também são associadas a comportamento indefinido.

Por exemplo, em C, o uso de qualquer variável antes que seu valor tenha sido inicializado leva a comportamento indefinido, assim como dividir um número por zero e indexar um vetor em índices que excedem seus limites (transbordamento de dados). Ao se deparar com qualquer uma dessas situações, o compilador é livre para qualquer ação, que pode ser a mais simples, a mais eficiente ou qualquer outra coisa.

É importante salientar que absolutamente qualquer ação tomada pelo compilador diante de uma situação de comportamento indefinido é válida, incluindo gerar mensagens de advertência ou silenciosamente ignorar a situação. Isso pode fazer com que programas aparentemente corretos, os quais compilam e rodam normalmente em uma determinada plataforma, deixem de compilar, sofram falhas de execução ou se comportem de maneira imprevisível em outras.

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.