Früf Abbruch eine for-schleife

Gast #2572018
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;
    }
}
Gast #2572043
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
#2572051
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
#2572071
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.
Gast #2572484
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
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.