#include <cs50.h> #include <stdio.h> int example[]; int main(void) { int example = {1,2,3}; for (int i = 0; i < 3; i++) { printf("%i \n", example[i]); } }
Por que isso me dá as mensagens de erro: “Excesso de elemnts no inicializador escalar” em “2” na matriz que estou definindo e a mensagem de erro “O valor inscrito não é uma matriz, ponto ou vetor” no meu “[i]” ao tentar imprimir o I-ésimo inteiro na matriz?
Obrigado.
Comentários
Resposta
Você deve definir o tamanho da matriz.
IE:
int example[10];
então você pode fazer isso para definir o primeiro elemento da matriz para 1:
example[0] = 1;
No entanto, você não pode fazer isso:
int example[10]; example = {1, 2, 3};
Se você já definiu a matriz, o compilador espera que você defina qual elemento (IE: [0]) da matriz que deseja definir (ou alterar), então o que deseja atribuir a esse elemento ( IE: 1).
se quiser que o tamanho seja definido automaticamente, você pode excluir isto:
int example[];
e escrever isto:
int example[] = {1, 2, 3};
então o compilador sabe que você está definindo a matriz e configurando os valores dos valores dos 3 elementos para 1, 2 e 3.
Seu código deve ser semelhante a este:
#include <cs50.h> #include <stdio.h> int main(void) { int example[] = {1,2,3}; for (int i = 0; i < sizeof(example) / 4; i++) { printf("%d\n", example[i]); } }
Espero que isso ajude! 🙂
Resposta
Fazendo
int example[];
você está inicializando um ponteiro para um array cujo tamanho não está definido. Depois disso, em
int example = {1,2,3};
você está adicionando valores ao ponteiro, o que é ilógico e não tem nenhum significado, você pode simplesmente fazer como
int example[3]; int example = {1,2,3};
Espero que isso ajude!
example
como sendo? quantos elementos você está tentando empurrar paraexample
?