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

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

11

02.01.2007, 15:30

Ich gebe dem Rest völlig Recht, den Fehler musst du selbst finden, speziell wo man dich auch schon mit der Nase draufgestossen hat.

Aber noch ein paar Erläuterungen (ohne Anspruch auf Vollständigkeit):

Warum mekkert der Compiler nicht, wenn ich folgende Schleife schreibe?

C-/C++-Quelltext

1
2
bool ende;
while (ende = false) { }


Immerhin steht in der Bedingung doch eine Zuweisung? Der Trick ist, eine Zuweisung hat ein Ergebnis! Nämlich genau das, was Rechts steht. In diesem Fall eben immer false, so dass die Schleife nie durchlaufen wird. Da ist es dann egal, ob ich meine ende Variable innerhalb der Schleife einen Wert zuweise, oder nicht.

Darum ist

C-/C++-Quelltext

1
2
bool ende;
while (ende = true) { }


auch eine Endlosschleife, weil das immer true wird.

Gemeint hast du natürlich das hier:

C-/C++-Quelltext

1
2
bool ende = false;
while (ende == false) { }


Die Idee, die Konstante auf die linke Seite zu schreiben, ist hier sehr hilfreich, weil das vom Compiler bemerkt wird. Anderereseits liest sich das immer irgendwie komisch... (meine Kolegen jammern immer, wenn ich sowas mache).

Abgesehen davon nutze ich bei Booleschen Werten auch gar nicht direkt einen Vergleich, sondern schreibe (für deinen Fall):

C-/C++-Quelltext

1
2
bool ende = false;
while (! ende) { }


Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

12

02.01.2007, 17:16

Oh tut mir echt leid @dot bei mir kommt doch kine Fehlermeldung
Ich hab das jetzt mal ausprobiert mit dem

C-/C++-Quelltext

1
while( false = Ende );

und jetzt steht da: E2277: L-Wert erwartet...
Was zum Kuckuck ist denn ein L-Wert ??????? :?: :?: :?:

Und ich hab das ganze jetzt auch noch mal mit Zahlen antstatt true und false und es hat auch nicht gefunzt.....
Gruß
Lord-archimedes

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

02.01.2007, 17:22

liest du auch wirklich was wir hier posten?
sieht nicht so aus, weil rklaffehn einen post vorher bereits die fertige lösung präsentiert hat inkl. einer besseren variante...

ein L-Wert ist etwas das auf der linken seite einer zuweisung stehen kann. und genau da liegt das problem.

C-/C++-Quelltext

1
Ende = true;


ist eine zuweisung und keine überprüfung auf gleichheit und deswegen lieferts andersrum auch einen fehler.
true ist kein L-Wert, weil du true keinen wert zuweisen kannst.

was du brauchst ist

C-/C++-Quelltext

1
Ende == true;


wie bereits oben geschrieben...

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

14

02.01.2007, 17:25

ja ich weiß das fuzt auch ich meine nur was ist ein L-WERT ?
P.S Danke nochmal
und danke das ihr euch soviel Zeit mit mir genommen habt ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

02.01.2007, 17:26

antwort steht jetzt oben ;)

16

02.01.2007, 19:45

Re: Programmfehler

Zitat von »"Lord-archimedes"«


C-/C++-Quelltext

1
void main(void)


Du solltest dich daran gewöhnen, in ISO C++ zu schreiben. Main muss immer "int" zurückgeben.
Sprachen: C/C++, C#, Assembler (16-Bit), QuickBASIC

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

17

03.01.2007, 11:06

Danke für den Tipp @Reboot aber warum eigendlich ???
was ist an
void main(void)
auszusetzen :?:
Ich versuche zwar immer int zu nehmen hab aber erlich gesagt tu ich das nicht so oft..... ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

03.01.2007, 11:08

es ist nicht weiter schlimm, weil der compiler aus void main() automatisch eine int main() macht die 0 zurückgibt...
der C++ standard sieht aber vor, dass main vom typ int ist ;)

Lord-archimedes

Treue Seele

  • »Lord-archimedes« ist der Autor dieses Themas

Beiträge: 234

Wohnort: Hannover

  • Private Nachricht senden

19

03.01.2007, 11:13

braucht der Compiler denn dann länger wenn ich
void main schreibe ???

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

03.01.2007, 11:15

ob länger oder kürzer, der zeitunterschied wird vermutlich ein paar nanosekunden nicht überschreiten ;)

Werbeanzeige