Lokale/Globale Variablen

Waterman

Mitglied
Hallo,
ich versuche gerade die Zuweisung/Veränderungen von globalen/lokalen Variablen zu verstehen. Könnte mir vielleicht jemand sagen an welcher stelle ich die Zuweisung/ Veränderung falsch mache ?
Ich glaube das Ergebnis ist a 2 jedoch komme ich darauf nicht

Java:
int a=0, b=2;

void bar(int b){
     a=b; //a=4
}
void foo(int a, int b){ //foo(2,0)
     {
       int b=a; //b=2
       int a=a+b; //a=2+2=4
     }
    bar(a); //a=4
}

int main(int argc, char *argv[])
{
    int b=a;  // b=0
    {
        int a=2;  //a=2
        foo(a, b); //a=4
    }
  return a; //a=4
}

Oder bleibt der Wert 2 weil Parameter per Call by Value übergeben werden und deshalb die Funktion den aktuellen Parameter bei Aufrufer nicht verändern kann ?
 
Zuletzt bearbeitet:

HBerger

Mitglied
Wobei das hier auch nen echt mieses Beispiel ist :)
Wer solchen Code in C schreibt, gehört eigentlich in die Programmierer-Hölle :)

Java:
    int a=0, b=2; // Globale definition von a und b modulweit (cpp datei)
     
    void bar(int b){  // parameter b ueberdeckt globales b
         a=b; //a=4  // zuweisung an parameter b von a global (ohne effekt nach der funktion)
    }
    void foo(int a, int b){ //foo(2,0) // parameter a und b ueberdecken globales a und b
         {
           int b=a; //b=2  // neudefinition von b, ueberdeckt parameter a 
           int a=a+b; //a=2+2=4 // neudefinition von a, ueberdeckt parameter a
         }
        bar(a); //a=4
    }
     
    int main(int argc, char *argv[])
    {
        int b=a;  // b=0 // lokale neudefinition von b, ueberdeckt globales b
        {
            int a=2;  //a=2 lokale neudefinition von a, ueberdeckt globales a
            foo(a, b); //a=4
        }
      return a; //a=4
    }

Ich glaub nicht das derjenige, der den code geschrieben hat, so richtig wusste was er tut.
das er hier nicht nur mit 2 sondern mit 6 weiteren arbeitet ...

Ciao ...
 
Zuletzt bearbeitet:

Neue Themen


Oben