2017-03-06 8 views
2
int a, b, c; 
a = 1; 
b = 2; 
c = a + 2*b; 
for (a=1; c<15; a++) 
{    
    Console.WriteLine(c.ToString()); 
} 

Console.ReadLine(); 

Ich habe eine einfache Frage. Muss ich meinen Zustand abhängig von meiner Initialisierungsvariablen definieren?
In dem obigen Beispiel, ich möchte die Schleife zu stoppen, wenn eine Variable "a" wird 10, so Variable "c" wird weniger als 15 sein.
Aber die Ausgabe ist unendliche Zeilen von "5". Ich erwarte, dass meine Ausgabe 14 ist.für Schleife Bedingung Ausgabe

was mache ich falsch?

+1

Sie müssen nicht, aber Sie müssten den Wert von 'c' aktualisieren – Sayse

+1

Sie drucken immer die Variable c und Sie ändern nie c. Also die Ausgabe ist 14 mal der Wert von c – Steve

+0

@ Meriç die Frage ist nicht dumm. Sie haben eine gültige Frage gestellt: "Muss ich meinen Zustand abhängig von meiner Initialisierungsvariablen definieren?". Sie haben es einfach nicht geschafft, Ihre Schleife funktional zu programmieren. –

Antwort

1

Wenn Sie wirklich wollten Sie alle 3 Teile einer for-Schleife weglassen könnte, so dass es im Wesentlichen eine while(true) Schleife wird

for(;;) 

Also nein, es muss nicht.

Aber Ihr Programm Arbeit zu machen, werden Sie den Wert von c in der Schleife aktualisieren müssen

for (a=1; c<15; a++) 
    { 
     c = a + 2*b; 
     Console.WriteLine(c.ToString()); 
    } 
5

bewegen c Änderung innerhalb der Schleife, oder werden Sie ohne Ende itereate:

for (a=1; c<15; a++) 
{ 
    c = a + 2*b; 
    Console.WriteLine(c.ToString()); 
} 
1

muss ich meinen Zustand auf meine Initialisierung variabel in Abhängigkeit definieren?

Nein, Sie können keine Bedingung definieren, die Sie möchten.

was mache ich falsch?

Sie nie so etwas, um diese Bedingung zu machen false wird es für immer wie in Ihrem Fall laufen.

Sie c nur einmal ändern, bevor die Schleife beginnt:

c = a + 2*b; 
for (a=1; c<15; a++) 
{    
    Console.WriteLine(c.ToString()); 
} 

sobald Sie die Schleife betreten wird c nie wieder geändert! Bewegen Sie den Änderungsteil in die Schleife:

for (a=1; c<15; a++) 
{    
    c = a + 2*b; 
    Console.WriteLine(c.ToString()); 
} 

Sie auch die Schleife mit einer bool Variable

bool condition = true; 
for (int a = 0; condition; i++) 
{ 
    c = a + 2*b; 
    if (c > 15) 
    { 
     condition = false; 
    } 
} 

EDIT

Sie könnten in den Vergleichsblock selbst tun, um die Berechnung schreiben könnte von die for-Schleife und es würde funktionieren:

for (a = 0; (c = a + 2 * b) < 15; a++) 
{ 
    Console.WriteLine(c.ToString()); 
} 

Haftungsausschluss: Ich würde es nicht empfehlen, weil es kryptisch und schrecklich zu lesen ist.

0

A Innen Zustand:

for (a=1; a<=10; a++) 
{ 
    c = a + 2*b; 
    Console.WriteLine(c.ToString()); 
} 

Schleife wird beendet, wenn, c 14 wird.

+0

Dies ändert sich vollständig, wenn die Schleife aufhören sollte – Sayse

+0

@Sayse, bearbeitet antwort, jetzt wird es gewünschte Ausgabe geben – Vikrant

+0

Es gibt nur die gewünschte Antwort für die aktuelle Gleichung für 'c', würde ich das nicht zuverlässig nennen. – Sayse

Verwandte Themen