Pytanie o kolejność clear i sync
Ostatnio zmodyfikowano 2013-08-15 15:33
danielpadewski Temat założony przez niniejszego użytkownika |
Pytanie o kolejność clear i sync » 2013-08-15 15:21:52 CZeść. Ćwiczyłem powtórzenie pętli do..while że jeśli gracz nie poda prawidłowej liczby to się pętla obraca. i zauważyłem coś , więc mam kod pierwzzy : #include <iostream> int main() { int a; do { std::cout << "Podaj liczbe : "; std::cin.clear(); std::cin.sync(); std::cin >> a; } while( std::cin.fail() ); std::cout << "Podales liczbe " << a << std::endl; return 0; }
Widzicie że najpierw jest cin.clear() a pote cin.sync() . I mamy również następny kod : #include <iostream> int main() { int a; do { std::cout << "Podaj liczbe : "; std::cin.sync(); std::cin.clear(); std::cin >> a; } while( std::cin.fail() ); std::cout << "Podales liczbe " << a << std::endl; return 0; } Tu pierwsze jest cin.sync() , a dopiero potem cin.clear() . Zauwazylem ze te dwa kody sie od siebie roznia efektem. W pierwszym wszystko dziala prawidlowo, czyli jesli liczba nieprawidlowa to się pętla powtarza a jesli liczba dobra to sie konczy petla i wypisuje tą liczbe. W drugim przypadku jest zle, bo jesli podamy liczbe prawidlową to jest okej, ale jesli podamy liczbe nieprawidłową to pętla powtarza się w nieskończoność nei pytając użytkownika o podanie liczby. Więc niewiem co to za znaczenie. Rozumiem znaczenie czy czyszczenie jest po podaniu czy przed podaniem liczby ale coś takiego ? Tego naprawde nie rozumiem. Proszę o wytłumaczenie :) |
|
pekfos |
» 2013-08-15 15:28:41 sync() nie zadziała, jeśli będą ustawione flagi błędu (które clear() czyści). |
|
danielpadewski Temat założony przez niniejszego użytkownika |
» 2013-08-15 15:33:36 A dzięki za pomoc. Kurs jest dobry i dużo rozumiem alę się dziwie że to nie jest napisanie :) |
|
« 1 » |