tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
34
ZUGRIFFE
1626
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    BlinkSkater BlinkSkater ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    7
    Hallo erstmal,
    ich hab ein kleines Problem (mit den einfachsten Befehlen überhaupt aber was solls):
    also ich hab nur ein kleines Programm zum Ausprobieren vom Zufallsgenerator geschrieben und damit man es neu starten kann am Ende das hier geschrieben:
    cin >> entsch;
    if(entsch = 1)
    {
    continue;
    }
    else
    {
    break;
    }

    aber egal welche Zahl ich eingebe, das Programm starten immer neu.
    Also wo liegt das Problem?
     

  2. #2
    Thug-Angel Thug-Angel ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    16
    vieleicht statt
    Code :
    1
    
    if(entsch = 1)

    das hier abfragen
    Code :
    1
    
    if(entsch == 1)

    probier es mal aus, bin mir nicht 100% sicher
     

  3. #3
    wasle wasle ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    9
    dass sitmmt schon aber meineswissens müste das programm dann bei einer eingabe von "0" trotzdem beenden.

    ich glaube dass sich dieser continue bzw. break nur auf den aktuellen stukturblok "{}" bezieht und nur diesen abbricht. ( gestehe das ist auch in gewisser weise unlogisch)

    aber es ist wahrscheinlich am besten wenn du das ganze programm in eine do-while schleife paktst und damit beendest. Oder das gesamte programm mit "exit"
    beendest
     

  4. #4
    Thug-Angel Thug-Angel ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    16
    wie wäre es mit

    return 0;

    anstatt break, wie du schon gesagt hast, bricht break ja nur den strukturblock aus
    nicht das Programm.
     

  5. #5
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Zitat Zitat von wasle
    dass sitmmt schon aber meineswissens müste das programm dann bei einer eingabe von "0" trotzdem beenden.
    Nein das ist falsch.
    Durch das = bekommt entsch wieder die eins zugewiesen, und ist somit wieder war.


    Eine Funktion vom Typ int, long, bool, ... oder das sollte man immer mit einem return beenden. Eine Funktion vom Typ void kann man jederzeit mit return; beenden.


    mfg
    umbrasaxum
     

  6. #6
    Konsumierer Konsumierer ist offline Mitglied Silber
    Registriert seit
    Jan 2004
    Beiträge
    84
    Edit: falsch
    Geändert von Konsumierer (14.04.05 um 10:33 Uhr)
     

  7. #7
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Das Problem ist: Wenn du überprüfst ob (variable = wert) gleich wahr ist, wird in deinem Beispiel immer wahr rauskommen. Du bekommst nur dann false raus, wenn die Zuweisung nicht geklappt hat.
    Falsch.
    Bei nur einem = wird erst die Zuweisung gemacht und dann wird überprüft ob die Variable war ist. Bei if(entsch = 0) würde die Zuweisung auch funktionieren, trotzdem wird es durch die 0 zu einem false kommen.


    mfg
    umbrasaxum
    Geändert von Tobias K. (14.04.05 um 10:20 Uhr)
     

  8. #8
    Konsumierer Konsumierer ist offline Mitglied Silber
    Registriert seit
    Jan 2004
    Beiträge
    84
    Das glaub ich nicht!
     

  9. #9
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Glaub es oder nciht, hab aber Recht.


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
     
    int main ()
    {
        int x, eingabe;
     
        if(x = 0)
            printf("HHH");
     
        printf("Variable ist %d", x);
     
        getch();
     
        return 0;
    }


    mfg
    umbrasaxum
     

  10. #10
    Konsumierer Konsumierer ist offline Mitglied Silber
    Registriert seit
    Jan 2004
    Beiträge
    84
    Tatsache! Jetzt bin ich geschockt...
    Naja, solche IF-Abfragen kommen eh selten vor.

    Umbra, muss jedes deiner Postings eigentlich mit "moin" anfangen und "mfg umbrasaxum" aufhören?
     

  11. #11
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Glaub mir doch gleich
    Aber ja, if(x = 0) kommt sehr selten, bis nie vor da das Ergebnis klar ist...

    Und ja jede meiner 1581 Antworten fangen so an, bzw. hören so auf und so wird es auch weiter gehen.


    mfg
    umbrasaxum
     

  12. #12
    Avatar von canuzzi
    canuzzi canuzzi ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Ort
    Wien
    Beiträge
    164
    Aber ja, if(x = 0) kommt sehr selten, bis nie vor da das Ergebnis klar ist..
    Ein gutes Beispiel, wo sowas gerne einsetzt, war mal ein Versuch eine Backdoor in den Linuxkernel zu schleussen. Wobei man dann allerdings:
    Code :
    1
    
    if ((x=0)) { /*verwirrcode */ }
    schreiben würde, um die Compilerwarnungen zu unterdruecken. Am besten dann dergestallt, um es noch besser zu kaschieren:
    Code :
    1
    
    if (((x=func())=0)) { /*verwirrcode */ }
    Dieser "Fehler" wird bei der Korrektur dann schon mal gern uebersehen.
    Mit der Sache wurde damals versucht, einen Wechsel der user-id auf 0 (=root) unter bestimmten Bedingungen zu erzwingen.
     

  13. #13
    Avatar von jokey2
    jokey2 jokey2 ist offline Mitglied Smaragd
    Registriert seit
    Nov 2004
    Beiträge
    1.235
    @umbrasaxum: Deine Erklärung stimmt nicht ganz (kniefiesel! ): In der if-Klammer wird ausgewertet, ob der Wert, der darin steht 0 ist oder nicht. Ist der Wert != 0, dann wird die nachfolgende Anweisung ausgeführt, sonst nicht. Der Wert der Zuweisungs - Operation ist der Wert der Variablen nach der Zuweisung (siehe operator=).
    if(x=0) -> Anweisung wird nie ausgeführt
    if(x=1) -> Anweisung wird immer ausgeführt
    if(x=2) -> Anweisung wird immer ausgeführt
    ...
     

  14. #14
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Hab ich das nciht gesagt?
    Naja gemeint aber aufjedenfall!


    mfg
    umbrasaxum
     

  15. #15
    Avatar von jokey2
    jokey2 jokey2 ist offline Mitglied Smaragd
    Registriert seit
    Nov 2004
    Beiträge
    1.235
    Ich sach doch: kniefiesel
     

Ähnliche Themen

  1. Programm stoppen - nicht beenden!
    Von Maddili im Forum Java
    Antworten: 12
    Letzter Beitrag: 11.05.10, 10:22
  2. Swing Fenster per Button schließen, NICHT das Programm beenden
    Von Markus im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 23.06.09, 12:53
  3. Programm richtig beenden und nicht killen
    Von The_Rave im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 04.06.06, 16:09
  4. C# ClosingEvent - Programm lässt sich nicht autom. beenden
    Von Skiron im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 18.11.05, 09:37
  5. Antworten: 0
    Letzter Beitrag: 25.04.05, 20:06