IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Array Comportement bizarre


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 21
    Par défaut Array Comportement bizarre
    Salut à tous,

    je viens vers vous car j'ai un souci avec un truc vraiment bateau... la lecture d'un array.

    Je développe sous une arduino Ethernet avec IDE arduino.

    Depuis hier j'ai des problèmes de lecture d'un array, j'ai uploadé un code tout bête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    void loop() {
     
      int tab[3] = {};
     
      for (int i = 0; i<4; i++){
        tab[i] = i + 1;
      }
     
      Serial.println(tab[0]);
      Serial.println(tab[1]);
      Serial.println(tab[2]);
      Serial.println(tab[3]);
      Serial.println("**");
     
      for (int i = 0; i<4; i++){
        Serial.println(tab[i]);
      }
    }
    On est d'accord rien de bien méchant et le résultat devrait tout simplement être 1,2,3,4
    C'est la que c'est bizarre,

    Voici le debug

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1
    2
    3
    4
    **
    1
    2
    3
    -512
    La partie

    Serial.println(tab[0]);
    Serial.println(tab[1]);
    Serial.println(tab[2]);
    Serial.println(tab[3]);

    retourne le bon résultat, par contre dans ma boucle il me sort un -512

    Mon problème est que dans mon code j'utilise aussi un for pour la lecture du tableau.

    Si vous avez une idée de ce problème de débutant... lol

    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    bonjour,
    ton tableau tab a 4 elements donc il faut declarer un int tab[4] et non pas un int tab[3] (ligne 3)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 21
    Par défaut
    Ah ouai vraiment trop mauvais.

    Merci pour l'oeil exterieur a force d'etre dans le code on voit plus les erreurs.

    Super merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 21
    Par défaut
    Je viens de faire un nouveau test et je reproduis la même erreur, du coup je cherche à comprendre,

    cette fois j'ai déclaré mon tableau sans valeur

    La partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Serial.println(tab[0]);
      Serial.println(tab[1]);
      Serial.println(tab[2]);
      Serial.println(tab[3]);
    me retourne bien 1,2,3,4

    par contre dans ma boucle c'est toujours le bordel
    1
    234
    4112
    836

    On est d'accord que ma boucle revient au même que d’écrire chaque "Serial.println[X]" mon i va de 0 a 3 soit
    alors pourquoi les valeurs change?

    C'est ce qui me chagrine...

    Merci pour les explications

  5. #5
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Comment compiles-tu ton programme ?

    int tab[] = {}; : ça compile ça ? Ça ne devrait pas, c'est invalide.

    int tab[3] = {}; : ça aussi, c'est interdit en C. Utilise { 0 } pour initialiser les éléments du tableau à zéro.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 21
    Par défaut
    Exact, voici comment je compile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    byte mac[] = {0x90,0xA2,0xDA,0x0F,0xCC,0x53};
    byte ip[] = {192,168,100,66};
    byte gateway[] = {192,168,100,254};
    byte subnet[] = {255,255,255,0};
    int dataIp[12] = {};
    Je m'en vais de ce pas corriger tous mes tableaux dans les programmes.

    Est-ce valable pour tous langages? je faisais du php / lua et je n'ai jamais rencontré ce souci.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comportement bizarre de mes FPS
    Par Ekinoks dans le forum OpenGL
    Réponses: 7
    Dernier message: 22/08/2005, 15h14
  2. xsl:test .... avec comportement bizarre
    Par Blue LC dans le forum XMLRAD
    Réponses: 2
    Dernier message: 10/06/2005, 13h56
  3. [ACESS][MEMO][ISNULL]Comportement bizarre
    Par seb.49 dans le forum ASP
    Réponses: 2
    Dernier message: 09/06/2004, 10h44
  4. [HttpClient] comportement bizarre, saute des catch()...
    Par iubito dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 04/02/2004, 15h25
  5. [Sybase] Comportement bizarre d'une table
    Par sdozias dans le forum Sybase
    Réponses: 4
    Dernier message: 03/02/2004, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo