ERLEDIGT
JA
JA
ANTWORTEN
34
34
ZUGRIFFE
1626
1626
EMPFEHLEN
-
13.04.05 17:00 #1
- 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?
-
13.04.05 17:53 #2
- 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
-
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
-
13.04.05 21:45 #4
- 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.
-
13.04.05 23:04 #5
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Nein das ist falsch.
Zitat von wasle
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
-
14.04.05 08:21 #6
- Registriert seit
- Jan 2004
- Beiträge
- 84
Edit: falsch
Geändert von Konsumierer (14.04.05 um 10:33 Uhr)
-
14.04.05 10:12 #7
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Falsch.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.
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
umbrasaxumGeändert von Tobias K. (14.04.05 um 10:20 Uhr)
-
14.04.05 10:22 #8
- Registriert seit
- Jan 2004
- Beiträge
- 84
Das glaub ich nicht!
-
14.04.05 10:24 #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
-
14.04.05 10:32 #10
- 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?
-
14.04.05 10:35 #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
-
Ein gutes Beispiel, wo sowas gerne einsetzt, war mal ein Versuch eine Backdoor in den Linuxkernel zu schleussen. Wobei man dann allerdings:Aber ja, if(x = 0) kommt sehr selten, bis nie vor da das Ergebnis klar ist..
schreiben würde, um die Compilerwarnungen zu unterdruecken. Am besten dann dergestallt, um es noch besser zu kaschieren:Code :1
if ((x=0)) { /*verwirrcode */ }
Dieser "Fehler" wird bei der Korrektur dann schon mal gern uebersehen.Code :1
if (((x=func())=0)) { /*verwirrcode */ }
Mit der Sache wurde damals versucht, einen Wechsel der user-id auf 0 (=root) unter bestimmten Bedingungen zu erzwingen.
-
@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.04.05 15:39 #14
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Hab ich das nciht gesagt?
Naja gemeint aber aufjedenfall!
mfg
umbrasaxum
-
Ich sach doch: kniefiesel
Ähnliche Themen
-
Programm stoppen - nicht beenden!
Von Maddili im Forum JavaAntworten: 12Letzter Beitrag: 11.05.10, 10:22 -
Swing Fenster per Button schließen, NICHT das Programm beenden
Von Markus im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 23.06.09, 12:53 -
Programm richtig beenden und nicht killen
Von The_Rave im Forum C/C++Antworten: 3Letzter Beitrag: 04.06.06, 16:09 -
C# ClosingEvent - Programm lässt sich nicht autom. beenden
Von Skiron im Forum .NET Windows FormsAntworten: 1Letzter Beitrag: 18.11.05, 09:37 -
Programm beenden, Programm sichtbar starten
Von yui05 im Forum PHPAntworten: 0Letzter Beitrag: 25.04.05, 20:06





Zitieren
Login






