Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Schleífen Abfragen

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 <
010
11.04.2005, 00:51 Uhr
Snopex



Also ich meinte :

Ich habe eine for - Schleife und möchte das jetzt eine do-while Schleife drummachen, damit mein Berechnung nochmal ausgeführt werden kann. Muss ich da nicht das do {} um die for Schleife legen und anschließend das while einbinden?




C++:
for(int i=0;i<12;++i)
    {
        std::cout<<"Geben Sie den Monatsumsatz von "<<months[i]<<" ein: ";
        std::cin>>monats_umsaetze[i];
        jahresumsatz+=monats_umsaetze[i];
    }
    std::cout<<"Ihr Jahresumsatz betraegt: \n"<<jahresumsatz;
    std::cout<<"Ihr durschnittlicher Jahresumsatz betraegt: "<<jahresumsatz/12;
    
    std::cin.get();
    std::cin.get();

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
11.04.2005, 01:00 Uhr
Pablo
Supertux
(Operator)


Macht dir zuert klar, welche Bedingung gelten muss.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
11.04.2005, 01:35 Uhr
Snopex



Ja ja, dass das "for"für die Anzahl der Wiederholungen meiner Ausgabe festlegt ist, weis ich ja. Aber wenn ich das gesamte Programm nochmal neu durchlaufen lassen will, muss ich doch ein while (taste==j || taste==J); einbauen, damit durch j,J dies geschiet. Oder ist das nach dem for nicht mehr möglich?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
11.04.2005, 10:18 Uhr
9ball




Zitat von ao:

[quote 9ball]
for(; ist schneller als while(1)
Könntest du diese Behauptung bitte belegen?


[/quote]

guckst du das (beispiel msvc 6)

Code:
8:        while (1)
00401038   mov         eax,1
0040103D   test        eax,eax
0040103F   je          main+30h (00401050)
9:            printf ("hello, while");
00401041   push        offset string "hello, while" (0042301c)
00401046   call        printf (00401060)
0040104B   add         esp,4
0040104E   jmp         main+18h (00401038)




Code:
10:       for(;;)
11:           printf ("hello, for");
00401050   push        offset string "hello, for" (00423ff0)
00401055   call        printf (00401060)
0040105A   add         esp,4
0040105D   jmp         main+30h (00401050)





Zitat von ao:


Zitat:
viele compiler scheinen das besser zu erkennen und optimieren dementsprechend
Ein Compiler, der for(; erkennen kann, kann auch while(1) erkennen.




anscheinend nicht. mein vs2003 macht's auch nicht besser
--
one for all and all for one

Dieser Post wurde am 11.04.2005 um 10:21 Uhr von 9ball editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
11.04.2005, 11:12 Uhr
ao

(Operator)



Zitat von 9ball:
guckst du das

Das hätte ich nicht erwartet. Zwei Anmerkungen:
1. Ist das mit oder ohne Optimierung (Release- oder Debug-Build)? Falls es Debug war: Im Debug-Build sind normalerweise alle Optimierungen unterdrückt, darum ist es genaugenommen korrekt, wenn der Compiler den Vergleich ausführt. Bau doch mal den Release-Code dazu.
2. Und mach zum Vergleich noch while (true) statt while (1), denn für C++ sind 1 und true nicht dasselbe.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
11.04.2005, 11:14 Uhr
virtual
Sexiest Bit alive
(Operator)


@9ball
Der Code ist ohne jede Optimierung kompiliert Wenn Du eine auch nur leichte Optimierung zulässt, sollten sich die Codefragmente nichts mehr geben,
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
11.04.2005, 15:57 Uhr
9ball




Zitat von virtual:
@9ball
Der Code ist ohne jede Optimierung kompiliert Wenn Du eine auch nur leichte Optimierung zulässt, sollten sich die Codefragmente nichts mehr geben


stimmt. dann sehen beide endlosschleifen gleich (kurz) aus.
btw: wer hatte da optimierungen angezweifelt
--
one for all and all for one
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: