Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

1

18.10.2005, 16:11

Wert von Variablen "nach" Schleifen?

wenn mir das niemand sofort antwortet ist das auch kein problem :ohoh: :ohoh: , die Frage stelle ich nur weil ich mich nicht ganz sicher bin:

wenn ich einen Wert in einer while Schleife ändere, bleibt der nach der Schleife noch so oder wird er wieder zurück geändert?


schonmal danke für die Antwort

Anonymous

unregistriert

2

18.10.2005, 16:21

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while (true)
{
    unsigned long i = 100;

    std::cout << i << std::endl;

    ++i;
}

und

while (true)
{
    static unsigned long i = 100;

    std::cout << i << std::endl;

    ++i;
}


Schreib dich nicht ab - lern probieren ;)

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

3

18.10.2005, 16:44

bin halt faul ;p :angel:

aber wie ändere ich das true das die Schleife aufhört?

Anonymous

unregistriert

4

18.10.2005, 18:07

gar nicht? wozu beenden? du hast nur gefragt wegen dem wert, nicht das die schleife aufhören soll

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

18.10.2005, 21:21

Achte mal auf die Var babel ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

babelfish

Alter Hase

  • »babelfish« ist der Autor dieses Themas

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

6

19.10.2005, 11:42

hmm, unsigned, was bedeutet das schon wieder :headscratch:

also bei mir zeigts nur das an

Zitat


100
100
100
100
100
100
100
100
ect.....

7

19.10.2005, 12:56

Hier nochmal der Code von nix da:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 1. Schleife:

while (true) 
{ 
    unsigned long i = 100;        // <-- Datentyp unsigned long


    std::cout << i << std::endl; 

    ++i;
} 

// und: 


// 2. Schleife:

while (true) 
{ 
    static unsigned long i = 100; // <-- Datentyp static unsigned long


    std::cout << i << std::endl; 

    ++i; 
}


"unsigned" bedeutet ohne Vorzeichen (also nur positive Zahlen mit Plus (+)), das ist hier aber eigentlich egal.
Wichtig hier ist "static": es bedeutet, dass der Wert der Variable nicht verändert werden kann. Es ist also eine Konstante.
Der Wert ist der angegebene (hier 100) und wird es immer bleiben. Deshalb gibt die erste Schleife einen hochzählenden Wert aus, dei zweite hingegen einen konstanten - nämlich 100.

Konstanten kann man auch mit "#define GANZTOLLEKONSTANTE 100"
definieren. (EDIT: Konstanten kann man auch mit "const" deklarieren)

Ich hoffe, ich hab nix falsch erklärt, ansonsten verbessert mich.

F0GX

Anonymous

unregistriert

8

19.10.2005, 12:57

unsigned = keine negativen werte.

Gut eine Schleife haste getestet und was ist mit der 2.?

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

9

19.10.2005, 16:44

FOGX Also das die Variablenwerte sich nicht ändern liegt nicht am static! Static bedeutet einfach nur, dass die Variable das erste mal an der Stelle erstellt wird und dann (auch wenn eine normale lokale Variable freigegeben werden würde) nach Verlassen der Funktion bestehen bleibt. Das static wird also beim nächsten Mal einfach ignoriert. Dadurch kannst du auf den alten Wert der Variable beim nächsten Funktionsaufruf noch zugreifen, was bei lokalen Variablen nicht geht (weil freigegeben). Sie funktioniert intern im Prinzip wie eine normale globale Variable, nur, dass du sich nicht von außerhalb der Funktion ansprechen kannst. Es bleibt immer 100, weil in jedem Schleifenaufruf i=100 gemacht wird^^

Anonymous

unregistriert

10

19.10.2005, 17:01

FOGX
Erst jetzt seh ich den Post über meinen. Sorry aber das was Du da sagst ist irgendwie totaler unsinn.

1. Unsigned bedeutet nur Postivie Zahlen, also nix +- sondern einfach nur positiv. Das eine Bit für das Vorzeichen entfällt.

2. static erstellt keine Konstante! static beschreibt einfach nur, dass die Variable im speicher bleibt bis ein Scope oder eine Funktion beendet wurde.

3. wenn ich noch 1x sowas lese mit #define kann man konstanten machen ist hier mehr als 2. Weltkrieg, da fahr ich richtig ab. const und kein #define für Konstanten!!!! #define für Konstanten zu benutzen ist 1. pervers, 2. veraltet, 3. nicht typsicher, 4. wertunsicher und 5. keine richtige konstante!

Werbeanzeige