| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Anweisungblock nach der Deklaration einer Variable??? im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo, nun lese ich mir grad ein Buch durch (C von A bis Z) und da habe ich bemerkt, ...
![]() |
| | #1 (permalink) |
| Registriert seit: 04.02.11 ![]() Likes: 0 | Anzeige Hallo, nun lese ich mir grad ein Buch durch (C von A bis Z) und da habe ich bemerkt, dass nach der Deklaration einer Variable Anweisungblöcke kommen. Hier mal das Beispiel: Code: #include <stdio.h>
int main(void)
{
int i=333;
if (i == 333)
{
int i = 666; /* <------- */
{
i = 111;
printf("%d\n",i); /* 111 */
}
printf("%d\n",i); /* 111 */
}
printf("%d\n",i); /* 333 */
system("PAUSE");
return 0;
} |
| | |
| | #2 (permalink) |
| Member of Honour ![]() | das darf man machen, soll dir hier aber nu verdeutlichen, wie das mit den lokalen variablen aussieht mehr sinn ist da kaum vorhanden, mir is zumindest noch kaum nen moment untergekommen, wo man das braucht. ggf. um mit variablen kurz einen zwischenschritt einzulegen, aber ohne die variablen hinterher verändert zu haben oder sowas.
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Das Beispiel 'smells like hell'. Das wäre ein Beispiel wie man lokale Variablen auf keinen Fall verwenden sollte. Denn dass man Ende wieder 333 in i gespeichert ist, würde man auf den schnellen Blick nicht erwarten. Deswegen sollte man Variablen innerhalb einer Methode in einem Unterblock nicht neu deklarieren, wie es dort der Fall ist. Am Ende wundert man sich nämlich dann über merkwürdiges Fehlverhalten der Methode |
| | |
| | #4 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Eher *C smells like hell* *scnr* Habe mir gerade das Beispiel nochmal angeschaut: Das sollte eigentlich den Gültigkeitsbereich der Variablen verdeutlichen Zitat:
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| | #5 (permalink) | |
| Registriert seit: 03.05.07 ![]() ![]() Likes: 50 | Zitat:
Code: void Object::func()
{
/* do stuff which doesn't need synchronisation */
{
LockObject lock(semaphore);
/* do stuff which needs synchronisation */
}
/* do stuff which doesn't need synchronisation */
} mfg benediktibk | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |