Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » unterschied in for schleife

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
11.09.2007, 14:29 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Müssen tun sie es imho nur bei einem reinen C Compiler.

Das Problem bei der Variante ist halt das i auch nach der for Schleife bekannt bleibt, was wenn du es nur für die Schleife brauchst ja unnötig ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
11.09.2007, 14:57 Uhr
Tommix



@Hans: Hier:
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=Declare#Answ
findest Du Argumente gegen Deinen Standpunkt.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
11.09.2007, 15:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Beim Visual Studio 6 wird das mit dem I in der Schleife "falsch" interpretiert. Wenn man nämlich mehrere Schleifen innerhalb einer Methode hat motzt der rum, Das war mal richtig ätzend wenn man Code von anderen bekommen hat die nen anderen compiler verwenden.

Das Problem lässt sich für "alte Visual Studio" Nutzer allerdings mit einem Makro beheben...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
11.09.2007, 15:23 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ja stimmt, da war die Variable auch nach der Schleife noch bekannt.
Wobei ich immer noch der Meinung bin das das die logischere Variante ist weil sie ja auch vor dem {} Block deklariert wird, aber die Diskussion hatten wir glaub ich schonmal hier

Dieser Post wurde am 11.09.2007 um 15:23 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
11.09.2007, 17:55 Uhr
Pler
Einer von Vielen
(Operator)


Aha. Das war bei den alten Compilern wirklich so.
Ich habe nämlich auch in Erinnerung, dass es Probleme gab, wenn man zwei forschleifen hinterander hatte. (und das int i... im Kopf der Schleife war).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
11.09.2007, 18:34 Uhr
0xdeadbeef
Gott
(Operator)


Mal ganz ehrlich, auf uralte Prä-Standard-Compiler kann man, wenn man vernünftigen Code schreiben will, heute keine Rücksicht mehr nehmen. Sofern es keine guten Gründe gibt, die Variable außerhalb zu deklarieren - mit anderen Worten, wenn du sie außerhalb nicht mehr brauchst - deklarier sie im Schleifenkopf. Auf die Art hast du in den umgebenden Blöcken keine unnötigen Symbole.

Dahinter steckt, im Endeffekt, die Idee der Modularisierung. Benutz den Kram solange du ihn brauchst, dann zerstör ihn schnellstmöglich wieder, damit du dir keine Gedanken mehr darum machen musst.

PS: So nebenbei, das fragliche Makro war

C++:
#define for if(1)for


...aber solche Schweinereien liegen ja zum Glück hinter uns.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 11.09.2007 um 18:36 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
11.09.2007, 19:38 Uhr
Pler
Einer von Vielen
(Operator)


Bitte? Was soll das bringen? und warum kommt das o.g. zustande?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
11.09.2007, 22:17 Uhr
Hans
Library Walker
(Operator)


Hi,

@Tommix: die Argumente beziehen sich auf Objekte im Sinne der OOP, also solche, die aus Klassendeklarationen entstehen. Von den eingebauten Standardtypen sagen die aber auch, das es im Prinzip egal ist, wo sie sich deren Definitionen befinden. Und ich bin bei meiner Bemerkung auch von den Standardtypen ausgegangen, und nicht von Objekten.
Nebenbei ist mir zumindest jetzt auch noch Schleierhaft, warum ich ein Objekt als Schleifenzähler verwenden sollte... - Okay, wenn ich mir 'ne Arithmetik-Bibliothek für 128-Bit oder noch breitere Integer basteln will, ist es wahrscheinlich Sinnvoll. - Aber ist es dann nicht auch empfohlener Stil, solche Typen etwas anders zu Bezeichnen, etwa Int, anstelle von int? - Man sieht wahrscheinlich, das ich von OOP nur begrenzt Ahnung habe, deshalb schreibe ich dazu auch fast nichts.
Ach ja, dann hatte ich bisher zumindest meisstens den Fall, das ich die Variable auch hinter der Schleife noch gebraucht habe, weshalb es auch nicht empfehlenswert ist, sie im Schleifenblock zu definieren.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 11.09.2007 um 22:20 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
11.09.2007, 22:44 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Bitte? Was soll das bringen? und warum kommt das o.g. zustande?


Durch das if kapselst du alle schleifen noch einmal.

Das Problem ist einfach dass der VS 6 wenn du ein for(int i;...) schreibst annimmt das i ist nicht teil der schleife sondern als ob du es vor der schleife definiert hast. Dies führt dann eben zu dem Problem dass er meint i wäre schon einmal definiert wenn du im gleichen block nochmal das int i neu in einer schleife definierst...

Wenn du da nochmal nen if-block rumpackst existiert das problem nicht mehr...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 11.09.2007 um 22:45 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
11.09.2007, 23:28 Uhr
Hans
Library Walker
(Operator)


Also demnach war das tatsächlich ein Fehler im compiler!
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: