Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
CProgramm zur Berechnung von Pi - "Der Bezeichner ist nicht definiert" ?
Beachte den Scope! wdh wird innerhalb der while-Schleife deklariert, was aber davor gemacht werden muss. Alles innerhalb der Schleife, bleibt innerhalb der Schleife, wie in Vegas.
Die Variable wdh hast du lokal innerhalb der do-while-Schleife angelegt.
Wenn du jetzt zum while(wdh == 1) kommst ist dieses wdh aber nicht mehr bekannt da es mit dem Ende des Blockes also '}' zerstört wird.
Die Lösung ist also ganz simpel.
Du definierst die Variable wdh außerhalb der äußeren do-while-Schleife.
@ Smagjus: Bis auf Pointer - die Daten dessen bleiben so lange erhalten, bis sie wieder freigegeben wurden. Der Zugriff erfolgt dabei aber genauso wie normale Variablen, heißt du kannst zwar auf den Speicher der Variablen x zugreifen, aber nicht mehr auf x selbst. Das wäre ein typisches Speicherleck.
Aus Sicht eines Javaianers würde ich sagen, dass beim Verlassen eines scopes einfach sämtliche darin erstellten Referenzen verfallen, was nicht automatisch heißt, dass die darin erstellten Objekte (also irgendwelche Daten in C) ebenfalls verfallen, wie Yuuri ja schon beschrieb.
Vielleicht das gleiche nochmal in anderen Worten Es wird einfach nur der Speicherbereich des lokalen Speichers (=Stack) invalidiert. D.h. alle Variablen innerhalb des Scopes "verlieren" ihren Wert. Wurde innerhalb des Scope auf Speicherbereiche zugegriffen, die nicht lokal auf dem Stack liegen, so bleiben die dennoch gültig. Dass nur die Deklaration nach exit aus dem Scope erlischt stimmt so aber nicht. Wenn du z.B. eine Objektinstanz als Variable im einem Block hast, so wird beim Verlassen dessen Destruktor aufgerufen. Die Daten sind u.U. noch physisch im Speicher verhanden, aber das wird nicht mehr garantiert.
Du kannst dir das wie einen "Stack" vorstellen. Wird ne neue Variable deklariert, so wächst der Stack um die geforderte Datenmenge. Wenn der Block dann verlassen wird fliegen alle darin deklarierten Variablen inklusive deren Speicherinhalb einfach wieder vom Stack runter.