Para cada uma das sentenças abaixo, marque (V) para Verdadeiro ou (F) para Falso.
( ) Se um programa tenta acessar uma posição fora dos limites de um vetor (ex: acessar vetor[10] em um vetor de 10 posições), o compilador C sempre irá gerar um erro de compilação.
( ) Se um programa tenta acessar uma posição fora dos limites de um vetor (ex: acessar vetor[10] em um vetor de 10 posições), o compilador C sempre irá gerar um erro de compilação.
Passo 1
O enunciado pergunta se, em C, ao acessar uma posição fora dos limites de um vetor (por exemplo, fazer
vetor[10]
num vetor com 10 elementos), o compilador sempre acusa erro de compilação. O conteúdo aqui é comportamento de arrays em C e a diferença entre erro de compilação e comportamento indefinido em tempo de execução.Passo 2
Em C não há verificação automática de limites de vetor nem em tempo de compilação nem em tempo de execução. O compilador simplesmente traduz o código e assume que você sabe o que está fazendo. Se você acessar
vetor[10]
em um vetor de tamanho 10, o compilador não vai reclamar — isso é undefined behavior, que pode causar falha em tempo de execução, corrupção de memória ou até parecer funcionar “normalmente”, mas nunca resulta num erro de compilação.Resposta
(F)