Pętla do while problem
Ostatnio zmodyfikowano 2013-10-16 12:46
ScruffyDrake Temat założony przez niniejszego użytkownika |
Pętla do while problem » 2013-10-16 10:40:35 Mam instrukcję: int j = 15; do { if( j % 2 == 0 ) j = j - 2; else j = j - 1; } while( j = 8 );
W odpowiedziach mam napisane, że to jest pętla nieskończona. Jednak gdy podstawie 15 wykonywana jest instrukcja else, więc jak możliwe jest, że 14 jest równe 8 i pętla jest dalej wykonywana. Proszę Was o pomoc. |
|
akwes |
» 2013-10-16 11:21:37 Przecież to się nawet nie kompiluje. Ilość błędów w tak małym przykładzie jest przerażająca. Od błędnej konstrukcji if aż po operator "porównania" w warunku końcowym pętli.
// Edit, widzę, że autor poprawił kilka literówek w kodzie. |
|
ScruffyDrake Temat założony przez niniejszego użytkownika |
» 2013-10-16 11:44:31 Wiem, że to się nie kompiluje. Jest to przykład wycięty z książki , odnośnie do while. |
|
docentpp |
» 2013-10-16 12:35:35 1) Czy przepisałeś ten przykład bez błędów literowych ? 2) Jeśli w książce jest opis,co ma robić ta pętla, to napisz to tutaj. |
|
b00rt00s |
» 2013-10-16 12:46:08 To nie jest błędny przykład, tylko podchwytliwy. Pętla wykonuje się, dopóki warunek jest prawdziwy, a on zawsze jest prawdziwy. Warunek na końcu przypisuje do j wartość 8, a następnie zwraca tę wartość. Wyrażenie przypisania pojawia się w kontekście, w którym wymagany jest typ bool, więc zachodzi niejawna konwersja z typu int. W przypadku takiej konwersji, każda wartość nierówna 0 konwertowana jest na wartość true, a więc pętla wykonuje się w nieskończoność. Zawartość pętli nie ma w takim przypadku absolutnie żadnego znaczenia. |
|
« 1 » |