onverwachte uitvoer

algemene C code
Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

onverwachte uitvoer

Berichtdoor Frits1956 » 31 Okt 2020, 15:18

Beste mensen,

Ik probeer multidimensionale array's te begrijpen en heb daarvoor een kort programma'tje geschreven.
Tot mijn stomme verbazing is de uitvoer anders dan verwacht.

ik had verwacht het volgende te zien
123
456
789

maar krijg
123
456
789
123
456
789

Kan iemand mij zeggen wat ik over het hoofd zie?

Code: Alles selecteren
int a[3][3] =
{ {1, 2, 3},
  {4, 5, 6},
  {7, 8, 9}
};

void setup()
{ Serial.begin(9600);
  for (int T1 = 0; T1 < 3; T1++)
  { for (int T2 = 0; T2 < 3; T2++)
      Serial.print (a[T1][T2]);
    Serial.println();
  }
}

void loop() {
}

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: onverwachte uitvoer

Berichtdoor Koepel » 31 Okt 2020, 16:56

Je bent vergeten om te noemen welk Arduino board je hebt.
Het is mogelijk dat er nog wat blijf hangen in een buffer, of dat bij het uploaden misschien een dubbele reset komt. Dat heb ik soms ook. Ik heb geen idee of dat wat geeft.

Stel je laat een bericht zien in setup() voor de duidelijkheid. Zo iets als "we zijn gestart".
Stel je hebt een Arduino Uno.
Dan werkt het. Druk maar op de reset-knop en die getallen worden maar één keer afgedrukt.

Maar uhm, dit ziet er toch veel netter uit ?
cpp code
int a[3][3] =
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },
};

void setup()
{
Serial.begin( 9600);
Serial.println( "De sketch is gestart");

for( int i = 0; i < 3; i++)
{
for( int j = 0; j < 3; j++)
{
Serial.print( a[i][j]);
}
Serial.println();
}
}

void loop()
{
}


Ik kon het niet laten om zelf ook iets lelijks te maken ;)
cpp code
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
void setup()
{
Serial.begin(9600);Serial.println("De sketch is gestart");
for(int i=0;i<3;Serial.println(),i++)for(int j=0;j<3;Serial.print(a[i][j++]));
}
void loop(){}

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: onverwachte uitvoer

Berichtdoor Frits1956 » 31 Okt 2020, 17:35

Hoi Koepel,
Allereerst, dank voor je reactie.

Het boardje wat nu aan mijn notebook hangt blijkt een Arduino Uno Wifi (het is een clone en aan mijn laptop gehangen is het een Uno :o ) te zijn.
Heeft mogelijk te maken met een verschil in Windows en Linux.

Bijzonder, idd, als ik upload (en dat gebeurt nogal eens bij iets uitzoeken ;) vooral als er wat anders uitkomt dan verwacht), dan is de uitvoer idd 2x
Bij het resetten is de uitvoer naar behoren. Weer wat geleerd!!! waarvoor dank!.

Wat betreft de manier van code schrijven:
De manier zoals jij het laat zien zal voor heel veel, zo niet voor het overgrote deel van de mensen duidelijk zijn.
Voor mij wordt het met al die leegtes een heel stuk onoverzichtelijker en raak ik gedesoriënteerd wat nu bij elkaar hoort. Heeft hoofdzakelijk te maken met accolades die bij elkaar horen. Een accolade aan de verkeerde kant van de regel en het program doet heel wat anders dan bedoelt.

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten