#include <iostream>
int main()
{
int a;
while(std::cin>>a)
std::cout<<a<<std::endl;
std::cout<<"Skonczylem"<<std::endl;
return 0;
}
Program skompilowany na Ideone działa inaczej niż skompilowany w Code::Blocks.
W C::B mam tak, że cin przyjmuje dane, zwraca jakąś wartość różną od zera, więc pętla się wykonuje i wraca do sprawdzania warunku pętli. Czyli znowu odpala się cin i program czeka na dane. Tak się będzie działo do czasu, aż np. cin zwróci 0, wtedy opuści pętlę. W C::B mogę to uzyskać np. wpisując literę (pewnie są jeszcze inne metody, brak mi wiedzy). To jest dla mnie zachowanie w pełni zrozumiałe, co innego z Ideone...
W Ideone różnica jest taka, że po przyjęciu danych i wykonaniu się pętli program nie czeka na kolejne dane wejściowe (których i tak by nie dostał, wiem, ale powinien czekać). Po przyjęciu wszystkich danych cin zwraca zero (tu pytanie - dlaczego?) i wychodzi sobie z pętli.
Powyższy kod skompilowany w C::B dla danych wejściowych:
1<spacja>2<spacja>3<enter>
Wyjście:
1
2
3 - i tutaj się zatrzymuje, czeka na kolejne dane
Tutaj ten sam kod na ideone:
https://ideone.com/oMZ2Mj
Wyjście:
1
2
3
Skonczylem