Forum: Mikrocontroller und Digitale Elektronik Früf Abbruch eine for-schleife


von Anfänger (Gast)


Lesenswert?

hallo,
ich beginne gerade in c und habe eine grundkenntnisse Frage,

wie kann ich eine Wert ausgeben, nur nachdem die For schleife beedet 
ist?
int A[5]={1,2,3,4,5};
ich bekomme return schon bei i=0;
int Temp;

for(int i=0;i<3;i++)
{
  if (A[i])==9;
     {
      Temp=A[i];
     }
  else
    {
      return 0;
    }
}

von B. Spitzer (Gast)


Lesenswert?

Anfänger schrieb:
> wie kann ich eine Wert ausgeben, nur nachdem die For schleife beedet
> ist?
Die Ausgabe erst nach der FOR-Schleife reinschreiben...

Davon abgesehen ist Dein Beispiel ziemlich Sinnfrei. Im Array A[] ist 
nirgends eine 9 drin. Daher wird die Schleife genau einmal durchlaufen, 
der Vergleich if(A[i]==9) // so ist es korrekt geklammert
wird also nie erfüllt ein und dann wird im Else-Zweig mit return 0 die 
Funktion immer beendet.

Student.lesen <= Buch.C

unn tschuess
Bernhard

von Tobias X. (Gast)


Lesenswert?

Die if Abfrage ist etwas seltsam. Das sollte wohl so lauten:

if(A[i]==9)
{
...
}

von Jannis C. (kabelwurm)


Lesenswert?

Anfänger schrieb
> int A[5]={1,2,3,4,5};
> ich bekomme return schon bei i=0;
> int Temp;
>
> for(int i=0;i<3;i++)
> {
>   if (A[i])==9;
-> hier sitzt die Klammer an der falschen Stelle und das Simikolon darf 
da auch nicht hin, dazu kann das nie wahr sein, da dein Array den Wert 9 
garnicht enthält. Außerdem wird der Wert 5 nie überprüft werden.
>      {
>       Temp=A[i]; ob das hier überhaupt ausgeführt wird, wage ich zu bezweifeln.
>      }
>   else -> Da deine Bedingung immer falsch ist wird immer 0 zurück gegeben.
>     {
>       return 0;
>     }
> }

Ein C-Buch oder das www.c-howto.de wären sicher angebracht, da die 
Syntax sehr fehlerhaft ist.
Gruß Jannis

von Max W. (max96)


Lesenswert?

if(A[i]) ist in deinem Fall immer true weil in A[] nur werte über 0 
gespeichert sind und du sowieso mit dem Semikolon danach die ganze 
Verzweigung beendest. Ein Wunder, dass das überhaupt kompiliert. Wenn du 
prüfen willst ob A[i] gleich 9 ist musst du das so machen:
1
if(A[i] == 9)
2
{
3
    Temp = A[i];
4
}
Wenn du dann Temp noch ausgeben willst schreibe einfach:
1
printf("%d", Temp);
2
return 0;
Das else kannst du dann weglassen.

von johannes v. (Gast)


Lesenswert?

Um den Thread Titel zu vervollständigen wäre noch break zu erwähnen.
1
int superfunktion()
2
{
3
  int temp = 0, A[] { 1,2,3,4,5,6,7,8,9 };
4
  for(int i(0); i<999; ++i)
5
  {
6
    if(A[i] == 9)
7
       break;
8
    temp = i;
9
  }
10
  return temp;
11
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.