Nieprawidłowe działanie komputera poprzez błąd w kodzie - pętla for
Ostatnio zmodyfikowano 2015-11-14 15:07
whiskeyo Temat założony przez niniejszego użytkownika |
Nieprawidłowe działanie komputera poprzez błąd w kodzie - pętla for » 2015-11-13 23:42:36 Cześć! Mam pewno nurtujące mnie pytanie, otóż dzisiaj podczas testu działania pętli for popełniłem błąd, który wyrządził wg mnie duży, negatywny wpływ na maszyny podłączone do jednego, wspólnego serwera. Cała pętla wyglądała na takiej zasadzie: for (i=1;i++;i>6) cout << "Pokazanie tekstu: " << i << endl; - błąd jednak wychwycono dopiero po uruchomieniu programu, wówczas kiedy komputer się zawiesił, jak i pozostałe jednostki działające na tym samym serwerze, dlatego zastanawiam się, czy był to jedynie zbieg okoliczności, czy jednak takie użycie pętli mogło spowodować wyżej opisaną sytuację. Wiem, że pętla powinna wyglądać tak: for (i=1;i<=6;i++), jednak co się stało, to się nie odstanie :D Jeżeli znacie odpowiedź na moje pytanie, proszę o odpowiedź :) |
|
carlosmay |
» 2015-11-13 23:49:19 To jest po prostu nieskończona pętla. Zawieszenie powinno być dziełem przypadku.
edit: nie jest nieskończona. Po uzyskaniu przez i max swojego przedziału, przeskoczy na liczby ujemne i zatrzyma się na i = 0 (dla typu ze znakiem), a dla typu bez znaku po przekroczeniu max przedział i będzie równe 0. |
|
whiskeyo Temat założony przez niniejszego użytkownika |
» 2015-11-13 23:51:18 Czyli zawieszenie wszystkich jednostek podłączonych do jednego dysku w przeciągu około 30 sekund jest możliwe? |
|
Monika90 |
» 2015-11-14 13:03:38 Jeśli i jest typu int, to ta pętla ma niezdefiniowane zachowanie, więc wg standardu c++ wszystko jest możliwe. |
|
carlosmay |
» 2015-11-14 13:16:42 Jeśli i jest typu int, to ta pętla ma niezdefiniowane zachowanie |
myślałem, że każdy typ całkowity zachowuje się jak "licznik", po osiągnięciu maksymalnej wartości swojego przedziału przyskakuje na minimalną wartość i tak wkoło. |
|
j23 |
» 2015-11-14 14:51:32 @carlosmay: Jest tak jak piszesz, w tej materii nic się nie zmieniło ;) |
|
pekfos |
» 2015-11-14 15:07:44 myślałem, że każdy typ całkowity zachowuje się jak "licznik", po osiągnięciu maksymalnej wartości swojego przedziału przyskakuje na minimalną wartość i tak wkoło. |
Tylko unsigned. Dla typów ze znakiem, przepełnienie ma niezdefiniowane zachowanie. |
|
« 1 » |