Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pętla do while problem

Ostatnio zmodyfikowano 2013-10-16 12:46
Autor Wiadomość
ScruffyDrake
Temat założony przez niniejszego użytkownika
Pętla do while problem
» 2013-10-16 10:40:35
Mam instrukcję:
 
C/C++
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.
P-93796
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.
P-93797
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.
P-93799
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.
P-93801
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.
P-93802
« 1 »
  Strona 1 z 1