tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
1397
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    epic fail epic fail ist offline Rookie
    Registriert seit
    Oct 2008
    Beiträge
    6
    Zitat Zitat von Orbit Beitrag anzeigen
    Aber bis auf den fehler dass beide male irgendwie nicht das geforderte zurückgegeben wird (einmal nichts und einmal, hmm, nix bekanntes) ist die Reihenfolge der returns richtig gesetzt (syntaktisch, nicht semantisch!).
    Nein, ist es eben nicht. Das zweite return ist unreachable code. Und damit falsch. Es gibt nicht eine if-Abfrage und somit ist nur ein return zulässig.

    Und die Umwandlung einer for-Schleife in eine while mit if-Bedingungen würde mich echt mal interessieren... Und was das Umschreiben in Assembler bringen soll, ebenso.
     

  2. #17
    Avatar von Orbit
    Orbit Orbit ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    175
    Nein. Das erste return IST bedingt. und somit erkennt der Compiler nur, wenn er sieht dass die Schleife in jedem Fall einmal durchlaufen wird () nur dann wird das erste return nämlich erreicht, dass das zweite unreachable code ist.

    Und die Umwandlung einer for-Schleife in eine while mit if-Bedingungen würde mich echt mal interessieren... Und was das Umschreiben in Assembler bringen soll, ebenso.
    Genau, damit du siehst dass es bedingt ist!
    So und hier mal eine forschleife als Konstrukt (mit sprungmarke wie in assembler
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    int i = 0;
    int max = 20;
     
    for: tueIrgendwas
         i++;
         falls max<=i springe zu end_for;
         springe zu for
    end_for: ende des beispiels.
    Ich habe absichtlich auf assemblersyntax verzichtet. Aber das Prinzip sollte klar sein oder?

    Nun folgendes:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    void seltsam(){
    for(int i = 0; i>10; i++){   // wird NIE ausgeführt; die 10 kann auch ne Variable sein, womit der Compiler dies NICHT sehen kann
         return 22;
    }
    tueIrgendwas();
    return 345;
    }
    Geändert von Orbit (15.10.08 um 14:17 Uhr)
    epic fail bedankt sich. 

  3. #18
    epic fail epic fail ist offline Rookie
    Registriert seit
    Oct 2008
    Beiträge
    6
    Aye, Du hast natürlich recht!
    Dass das erste return in einer for-Schleife stand, hab ich völlig ignoriert Sorry.

    edit

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    [b]void[/b] seltsam(){
    for(int i = 0; i>10; i++){   // wird NIE ausgeführt; die 10 kann auch ne Variable sein, womit der Compiler dies NICHT sehen kann
         [b]return 22;[/b]
    }
    tueIrgendwas();
    [b]return 345;[/b]
    }
    Fällt Dir was auf
    Geändert von epic fail (15.10.08 um 14:27 Uhr)
     

  4. #19
    Avatar von Orbit
    Orbit Orbit ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    175
    War auch ein wenig schlecht sichtbar, weil der Code in der forschleife nicht eingerückt war.
    @proXXic
    Genau deshalb sollte man sich an solche Konventionen halten!
    Immer mit Einrücken arbeiten und eine forschleife am besten so beenden, dass man das Semikolon am ende sieht, also in einer neuen Zeile.
    Wenn du 500 Zeilen Quelltext lesen musst, ist es extrem zeitaufwendig, sich das ende einer Schleife erst suchen zu müssen!
    also aus
    Code :
    1
    2
    3
    
        for ( i=0 ; i <4 ; i++ ){
        int zufall = random.nextInt(10);
        return getRandomArray;}
    (Achtung semantisch + syntaktisch unbrauchbar)
    mache demnächst
    Code :
    1
    2
    3
    4
    
    for ( i=0 ; i <4 ; i++ ){
        int zufall = random.nextInt(10);
        return getRandomArray;
    }
    um Missverständnissen vorzubeugen....
    Gruß,
    Orbit

    edit

    Code:

    void seltsam(){
    for(int i = 0; i>10; i++){ // wird NIE ausgeführt; die 10 kann auch ne Variable sein, womit der Compiler dies NICHT sehen kann
    return 22;
    }
    tueIrgendwas();
    return 345;
    }

    Fällt Dir was auf
    Ähm, dass ich void angebe aber int zurückgebe?
    Geändert von Orbit (15.10.08 um 14:34 Uhr)
     

Ähnliche Themen

  1. Zufallszahlen
    Von Soul-ya im Forum C/C++
    Antworten: 27
    Letzter Beitrag: 15.03.10, 15:47
  2. Zufallszahlen
    Von kimi im Forum Java
    Antworten: 6
    Letzter Beitrag: 01.01.10, 19:55
  3. Probleme mit Zufallszahlen im Array?
    Von jackie05 im Forum Delphi, Kylix, Pascal
    Antworten: 15
    Letzter Beitrag: 28.01.09, 11:15
  4. Zufallszahlen
    Von WorldRacer im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 13.06.08, 23:19
  5. Zufallszahlen
    Von phil_2003 im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 24.02.07, 19:12