Wie funktioniert die Anweisung in diesem Beispiel?

9

Ich untersuche dieses Codebeispiel:

%Vor%

Ich verstehe nicht, warum die "Not Found" -Anweisung aufgerufen wurde und die entsprechende Nachricht auf der Konsole gedruckt wird, wenn ich eine Suchnummer wie 10 eingabe, in diesem Fall goto: Found-Anweisung wird ausgeführt, also goto: NotFound-Anweisung wird nie sein aufgerufen, aber immer noch die entsprechende Nachricht ist auf der Konsole gedruckt, ich verstehe nicht, wie in diesem Fall Programm springt nie auf diese "NotFound" Label.

Bitte, wenn Sie mir jetzt eine Hand darüber geben ...

Danke

    
Mircea 31.08.2010, 16:46
quelle

6 Antworten

8

Eww goto's, würde ich verwenden und if/else statement, aber wenn du goto's brauchst:

%Vor%     
SwDevMan81 31.08.2010, 16:50
quelle
6

Ich würde diesen Code umschreiben, um die Verwendung von goto zu vermeiden:

%Vor%     
Mark Byers 31.08.2010 16:50
quelle
4

Es wird aufgerufen, weil Ihr Code in der Found-Liste nichts hat, um den Code im NotFound-Label zu überspringen (es sei denn, Sie rufen goto erneut auf, die Ausführung wird durch das Label fallen und nicht überspringen).

Davon abgesehen, benutze goto nicht! Ich werde so weit gehen und sagen, dass es immer eine schlechte Idee ist und neu geschrieben werden kann.

In Ihrem Fall können Sie ein einfaches boolesches Flag hinzufügen, um Ihren goto loszuwerden:

%Vor%     
Justin Niessner 31.08.2010 16:48
quelle
1

Weil Sie einfach zum Fund-Label springen und weiter zum Not Found-Label gehen. Du brauchst ein drittes Label namens EndFound und gehst nach dem Fund zu ihm.

%Vor%     
Novikov 31.08.2010 16:49
quelle
1

Wenn Sie nicht möchten, dass die "Not Found" -Statements ausgeführt werden, wenn die "Found" -Statements ausgeführt werden, verwenden Sie ein anderes Goto, um den NotFound-Teil zu überspringen. gehe zu einem Abschnitt, aber das bedeutet nicht, dass der Abschnitt nicht ausgeführt wird, wenn er nicht über einen Goto angesprungen wird. Denken Sie daran, dass der Code in einer Top-Down-Version ausgeführt wird. Wenn Sie also keinen Code überspringen, wird er ausgeführt.

Beispiel:

%Vor%     
Jeremy 31.08.2010 16:51
quelle
0

Weil, nachdem es zu Found gesprungen ist, die Ausführung einfach zur nächsten Zeile fortfährt, die zufällig die Schreibzeile der "nicht gefundenen" Konsole ist. Sie müssen noch einen weiteren Sprung hinzufügen, um darüber zu springen (oder noch besser, dies neu zu gestalten, um die Gotos komplett zu vermeiden)

Es ist genau so ein Problem, dass GOTOS vermieden werden sollten.

    
James Curran 31.08.2010 16:51
quelle

Tags und Links