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?
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?
Ale jak, przecież to inny typ jest.
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ł.
Można napisać, ale się nie skompiluje. Natomiast takie coś już tak:
for(cin >> a; a <= 10; a++)
// ...
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"? ;-)
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.
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++)
{
//
}
Althorion napisał(a):
Pętla
for
w C/C++ to naprawdę prymitywna konstrukcja, równoważnafor(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)