gleichnamige globale Variablen
-
Hallo zusammen
Ich habe ein Frage, und es geht nicht darum das ich unbedingt Globale Variablen einsetzen will, mehr ums verstehen ...
#include <iostream> int test =4 int mein() { float test =2.2 std::cout<<test<<"\n"; //gibt 2.2 aus std::cout<<::test<<"\n"; //gibt 4 aus ::test=test + 2; std::cout<<::test<<"\n"; //gibt 6 aus return 0; }Warum erkennt er in Zeile 10 das "test" als die globale Variable ... weil ich vorher ::test= ... geschrieben habe?
Und wie kann ich ihm sagen das er die nicht globale Variable nehmen soll, ergo ::test dann 4,2 ist?
Ich will so eine Sünde nicht in meinem Programm einbauen, bin nur bei einem Tutorial darüber gestolpert, und Frage mich jetzt, warum das so ist. Da haben die Schweine mich nämlich alleine gelassen XD
-
Was bedeuten denn die :: ?
-
1. Du meinst wohl "int main()" nicht "int mein()"

2. Über "::" vor der Variable wählst du die Globale.evd schrieb:
Und wie kann ich ihm sagen das er die nicht globale Variable nehmen soll, ergo ::test dann 4,2 ist?
"::test" IST hier die globale Variable, nimm die beiden Doppelpunkte weg, dann klappt es auch wie gewünscht.
evd schrieb:
...Ich will so eine Sünde nicht in meinem Programm einbauen, bin nur bei einem Tutorial darüber gestolpert, ...
Du solltest das Tutorial dennoch wegschmeißen. Ich wüsste auch kein einziges gutes für C++.
-
evd schrieb:
Und wie kann ich ihm sagen das er die nicht globale Variable nehmen soll, ergo ::test dann 4,2 ist?
::testauch alsfloatdeklarieren?
-
Ich glaube der TO hat schon verstanden, dass bei :: die globale Variable genommen wird. Das merkwürdige scheint ja zu sein, dass er bei "::test=test + 2" für beides mal die globale Variable nimmt, sodass 6 raus kommt. Ich habs das hier gerade mal in gcc 4.4 und 4.9 getestet und tatsächlich kommt bei der letzten Ausgabe bei mir 4 raus (was ja 4,2 abgerundet ist). Wenn ich die globale Variable auch als float deklariere kriege ich 4,2. Darf man fragen welchen Compiler du benutzt? Wenn bei dir wirklich 6 ausgegeben wird klingt das stark nach einem Compilerfehler.
-
danke, hat mir sehr geholfen

ich habe das umwandeln in ein Float vergessen XD
und... auch... anderes ... sorry ^^evd schrieb:
#include <iostream> int test =4 int mein() { float test =2.2 std::cout<<test<<"\n"; //gibt 2.2 aus std::cout<<::test<<"\n"; //gibt 4 aus ::test=test + 2; std::cout<<::test<<"\n"; //gibt 6 aus return 0; }Bei Zeile 11 habe ich mich vertippt, gibt 4 aus, nicht 6.
Wenn ich es umwandle dann kommt wie gewünscht 4.2
nochmal danke
