Ir ao conteúdo
  • Cadastre-se
Sérgio Manoel

Em c, for pode exceder o limite de vetores?

Recommended Posts

Pessoal, é o seguinte fiz uma prova de algoritmos, em C.

 

Uma questão mostrava um código semelhante a esse no caso com uma estrutura semelhante a essa não igual, eu tinha que descobrir qual o valor que o i terminaria, no caso a posição dele.

Eu automaticamente pensei que como só existem 10 espaços no vetor, e sempre acrescenta +1 na repetição o numero final seria 10, fiz o mesmo no CodeBlocks e  deu até a posição 10.

 

Problema é quando entreguei a prova(todos ja tinham entregado) eu perguntei está certa professor? ele disse que não estava ele disse que o valor final seria 11. Me surgiu essa dúvida gigantesca creio que vou ser reprovado por causa desse erro.

 

Mas queria saber tem como a repetição exceder o numero de espaços disponíveis no vetor??

 

Código:

 

#include<stdio.h>
#include<stdlib.h>
int main(){
int i;
int vetor[9];
for( i = 1; i<=10; i++){
    printf("Posição %d\n", i);
    }
}


 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @Sérgio Manoel !

Esta questão é daquelas em que a resposta parece obvia; Uma casquinha de banana esperando por você e daí tu escorregasse direitinho.
 

8 horas atrás, Sérgio Manoel disse:

Mas queria saber tem como a repetição exceder o numero de espaços disponíveis no vetor??

 

Sim, o indexador (neste caso a variável i) pode exceder o número de espaços reservado pelo vetor; A este fenômeno, se dar o apelido em inglês "Over bound". E apenas por implementação é possível garantir que "Over Bound" não aconteça.

 

Para implementação da questão, posso dizer que:

( i = 1; i<=10; i++) <-> i vai assumir := os valores menores que 10 e igual 10, implica dizer que vai acontecer uma última repetição quando i := 10, quando i := 11, ela não mais satisfará a condição de existência e o laço FOR fecha com valor 11.

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include<stdio.h>
#include<stdlib.h>
int main() {
    int i;
    int vetor[9];

    for ( i = 1; i <= 10; printf("%d\n", i++) );
    
    printf("%d\n", i++);
    
}

Em tempo real >_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×