Wypisywanie liczb na ekranie

0

Treść:Npiasz program, który wypisze na ekranie liczby.
32,16,8,4,2

#include<iostream>
using namespace std;
int main()
{
for(int i=32;i>=2;i--)
{
i=i++;
cout<<i<<endl;
i = i/2;

}
return 0;

}
Pytanie czemu mi wyświetla 32,15,6,2 ??

0
for(int i=32;i>=2;)
{
	cout<<i<<endl;
	i = i/2;
}
3

W odpowedzi na twoje pytanie

  for(int i=32;i>=2;i--) // po kazdym wykonaniu petli zmienna "i" bedzie pomniejszana o 1
    {
        // zanim zaczna wykonywac sie te wszystkie magiczne sztuczki to i = 32

        i=i++; // na dzien dobry benc zachodza dziwne czary w styl
               // int tmp = i;
               //           i++;
               //           i = tmp;
               // wiec i pozostaje bez zmian = 32

        cout<<i<<endl; // wyswietlasz sobie to 32 na ekran

        i = i/2; // i = 32/2;

        // w koncu po przebytych meczarniach i = 16

        // wracasz na gore jednak ja napisze nizej zeby nie mieszac komentarzy
        //---------------- druga iteracja --------------
        // i pomniejsza o 1 wiec i = 15
        // i=i++; udaje ze cos robi
        // wyswietlasz 15
        // i = 15/2;  
        // i = 7;
        //---------------- trzecia iteracja --------------
        //itd...

    }

Ja zrobilbym to tak :)

cout<<"32,16,8,4,2";
0
Raloseq napisał(a):

Treść:Npiasz program, który wypisze na ekranie liczby.
32,16,8,4,2

#include<iostream>
using namespace std;
int main()
{
for(int i=32;i>=2;i--)
{
i=i++;
cout<<i<<endl;
i = i/2;

}
return 0;
}
Pytanie czemu mi wyświetla 32,15,6,2 ??

i=i++; to jest Undefined behavior i prawdopodobnie znosi się z i-- .
Nie rozumiem twego zdziwienia to zamieszanie z i=i++; i i-- powinno wzbudzić twoje podejrzenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1