2016-04-01 2 views
-3

Ich habe diesen Teil in meinem C# -Code, die Antwort auf den Code ist (ENDLOSSCHLEIFE)C# RetVal Komplikation

Kann jemand mit der Erklärung mir bitte helfen?

private void Form1_Load(object sender, EventArgs e) 
{ 
    Int32 X = 1; 
    Int32 RetVal = X; 

    while (X <= 5) 
    { 
     if (X == RetVal && X < 2) 
      RetVal = 4; 
     X = RetVal; 

     X += 1; 
    } 
    MessageBox.Show(X.ToString()); 
+2

Haben Sie versucht, zu debuggen? Es ist nicht einmal notwendig, aus dem Code zu sehen, dass nach der ersten Schleife 'X'' 5' ist und 'RetVal'' 4' ist. Und das wird so bleiben, weil deine 'if' Bedingung nun'false' ist. Nachdem das 'if'' X' wieder auf 'RetVal' (' 4') gesetzt und wieder => '5' inkrementiert wurde. Nach jeder Iteration ist "X" also "5" und "RetVal" ist "4". –

+3

Dies ist einer der Gründe, sofort einen Debugger zu verwenden. – Steve

+0

Vielleicht hätte ich Ihren Einzug nicht korrigieren sollen. Vielleicht dachtest du, dass 'X = RetVal' Teil des positiven' if'-Zweiges ist? –

Antwort

1

X ist nie größer als 5 aufgrund X = RetVal; nicht in den Anwendungsbereich des if Block sein und RetVal nie immer größer als 4

Verwandte Themen