Pętla FOR w C++, pytanie donośnie składni.

0

Wiem że prawidłowa pętla wygląda tak:

for(a=0; a<=10; a++)
{
cout<<"Coś";
}

ale czy zamiast a=0 możana napisać a = cin>>a?

3

Ale jak, przecież to inny typ jest.

3

Pętla for w C/C++ to naprawdę prymitywna konstrukcja, równoważna for(instrukcja wykonywana przed pętlą; warunek pętli; instrukcja wykonywana po każdej iteracji) {cośtam;}:

instrukcja wykonywana przed pętlą;
while (warunek pętli) {
    cośtam;
    instrukcja wykonywana po każdej iteracji;
}

Nie ma w tym żadnej większej filozofii, języka nie obchodzi, jakie te instrukcje/testy będziesz miał.

4

Można napisać, ale się nie skompiluje. Natomiast takie coś już tak:

for(cin >> a; a <= 10; a++)
    // ...
1

@KomnatoMan:

a to znaczy?

Piszesz a = 0, czyli a jest integerem, cin>>a, to inny typ. Czytasz w ogóle komunikaty kompilatora, czy tylko go "torturujesz"? ;-)

3

Normalnie operator >> w C++ oznacza przesunięcie bitowe. Napisałem normalnie, bo czasem można to zachowanie zmienić. W każdym razie przesunięcie bitowe to mnożenie:

int a = 2;
a << 1;//wynik: 4
a << 2;//wynik: 8
//Albo w drugą stronę:
8 >> 1;//wynik: 4

Przy normalnym zachowaniu operatora >> można by było go użyć w pętli w ten sposób:

for (int a = 20; a > 1; a >>= 1)
{
    cout << "a " << a << endl;
}

Dla cin operator >> zachowuje się inaczej. Pobiera dane z konsoli i wpisuje do zmiennej, Np.

int a = 0;
cin >> a;

pobiera z konsoli liczbę i wpisuje do zmiennej a.
Tak więc omawiany zapis w pętli jest bez sensu.

2

Jeżeli chcesz, żeby pętla wykonywała się od liczby, którą zdefiniuje najpierw użytkownik, to możesz zrobić, np. tak:

    int a = 0;
    cin >> a;

    for (a; a <= 10; a++)
    {
       //
    }
3
Althorion napisał(a):

Pętla for w C/C++ to naprawdę prymitywna konstrukcja, równoważna for(instrukcja wykonywana przed pętlą; warunek pętli; instrukcja wykonywana po każdej iteracji) {cośtam;}:

instrukcja wykonywana przed pętlą;
while (warunek pętli) {
    cośtam;
    instrukcja wykonywana po każdej iteracji;
}

Nie ma w tym żadnej większej filozofii, języka nie obchodzi, jakie te instrukcje/testy będziesz miał.

bardziej coś takiego:

{
    instrukcja wykonywana przed pętlą
    while (warunek pętli)
    {
        {
            cośtam
        }
        instrukcja wykonywana po każdej iteracji
    }
}

(dodatkowe klamry ograniczają zasięgi i wymuszają destruktory)

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