#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]); } } 

Pourquoi cela me donne-t-il les messages derreur: « Excès déliminations dans linitialiseur scalaire » à « 2 » dans le tableau que je « m définis, et le message derreur » La valeur soumise nest pas un tableau, un point ou un vecteur « à mon » [i] « lorsque vous essayez dimprimer le Ième entier dans le tableau?

Merci.

Commentaires

  • Il y a eu une erreur dans linitialisation: int example = [1,2,3]; et non {} 🙂
  • @AhmedEl non ..
  • @JakobH, en C, un tableau a une taille fixe – une fois que la taille dun tableau est déterminée, elle ne peut pas être modifiée. maintenant quelle est la taille que vous avez défini comme étant example? de combien déléments essayez-vous dinsérer example?
  • Désolé, non ' t voir la ligne avant main …

Answer

Vous devez définir la taille du tableau.

IE:

int example[10]; 

alors vous pouvez le faire pour définir le premier élément du tableau à 1:

example[0] = 1; 

Vous ne pouvez pas faire ceci cependant:

int example[10]; example = {1, 2, 3}; 

Si vous « avez déjà défini le tableau, le compilateur sattend à ce que vous définissiez quel élément (IE: [0]) du tableau que vous voulez définir (ou modifier), alors ce que vous voulez attribuer à cet élément ( IE: 1).

si vous voulez que la taille soit définie automatiquement, vous pouvez supprimer ceci:

int example[]; 

et écrire ceci:

int example[] = {1, 2, 3}; 

alors le compilateur sait que vous définissez le tableau et définissez les valeurs des valeurs des 3 éléments sur 1, 2 et 3.

Votre code devrait ressembler à ceci:

#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]); } } 

Jespère que cela vous aidera! 🙂

Réponse

En faisant

int example[]; 

vous initialisez un pointeur vers un tableau dont la taille nest pas définie. Ensuite, dans

int example = {1,2,3}; 

vous ajoutez des valeurs au pointeur, ce qui est illogique et na aucune signification, vous pouvez simplement le faire comme

int example[3]; int example = {1,2,3}; 

Jespère que cela vous aidera!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *