Gueltigkeitsbereich Fehler im Tutorial?
-
Hi Leute,
bin gerade dabei C++ zu lernen. Tolle Sprache, macht viel Spaß.
Nun habe ich aber zwei Probleme.Ich lerne gerade mit diesem Tutorial hier: http://www.online-tutorials.net/c-c++-c/c++-tutorial-teil-1/tutorials-t-1-58.html#top
Weil dort gesagt wurde, das viele Tutorials sich nicht an den "C98" Standard halten würden. Was genau bedeutet das? Und ist das noch up-to-date?
Nun kommt hier mein eigentliches Problem. Ich bin gerade an dem Punkt, wo es um Gueltigkeitsbereiche geht. Aber der Beispielcode gibt nicht das aus, was im Tutorial beschrieben wird:
#include <iostream> using namespace std; int a = 3; //Gültigkeitsbereiche von main int main() { int a = 55; cout << a << endl; //Gibt 55 aus { // überdeckt die lokale wieder d.h. a == 55 ist nur innerhalb eines Gültigkeitsbereichs cout << a << endl; //Gibt 3 aus } return 0; }Laut dem Kommentar im Code müsste die Ausgabe 55 und dann 3 sein. Einmal aus der ersten Variablen den Wert "55" und aus der zweiten den Wert "3"
Nun bekomme ich aber zweimal "55" ausgeben?Woran liegt das? Meine Entwicklungsumgebung ist das Programm "Dev-C++"
Danke im Voraus für eine Antwort

-
Du hast da was falsch verstanden. Gültigkeitsbereiche überdecken garnix. Du kannst da Gültigkeitsbereiche einfügen so viel du willst, der Compiler nimmt immer an, dass du das lokalste a meinst. Wenn du das globale meinst, musst du ::a schreiben.
-
Ich hab mir das Tutorial jetzt nicht angeguckt, aber das du zweimal 55 bekommst ist auf jeden Fall richtig, da die lokalen Variablen den globalen vorgezogen werden.
Wenn du stattdessen möchtest, dass 3 statt 55 ausgegeben wird, müsstest ducout << ::a << endl; //Gibt 3 ausschreiben.
[Edit] Da war wohl einer schneller

-
Die Variable a würde nur dann überdeckt werden, wenn du im inneren des lokalen Gültigkeitsbereich noch eine weitere gleichnamige Variable definieren würdest.
PS: C98 ist erstens ein Standard für C und zweitens auch schon von moderneren Varianten abgelöst worden

-
Oh danke euch beiden

Das hat mir sehr geholfen

-
CStoll schrieb:
Die Variable a würde nur dann überdeckt werden, wenn du im inneren des lokalen Gültigkeitsbereich noch eine weitere gleichnamige Variable definieren würdest.
PS: C98 ist erstens ein Standard für C und zweitens auch schon von moderneren Varianten abgelöst worden

Ok danke für die Antwort. Ich werde mir dann ein anderes Tutorial suchen. Dieses ist wohl älter und auch komisch geschrieben
-
Naja, C++98 wurde erst vor ein paar Wochen offiziell abgelöst und das neue C++11 ist noch kaum verbreitet. Es gibt auch eine Art Zwischenstandard namens tr1, aber den braucht man als Anfänger nicht wirklich kennen, das sind "nur" ein paar nützliche Erweiterungen der Standardbibliothek, keine Änderungen an der Sprache. Mit einem C++98 konformen Tutorial/Buch fährst du auch heute noch sehr gut (abgesehen davon, dass hier niemand ein gutes Internettutorial kennt).
-
CStoll schrieb:
PS: C98 ist erstens ein Standard für C und zweitens auch schon von moderneren Varianten abgelöst worden

C98 gibt's gar nicht.
C89, C++98, C99, C++03, C++11 - aber kein C98
(Gemeint ist auf der Seite natürlich C++98);