• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dziwne zachowanie Ideone

Object Storage Arubacloud
+1 głos
357 wizyt
pytanie zadane 10 kwietnia 2015 w C i C++ przez Piotr Batko Stary wyjadacz (13,190 p.)
#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

1 odpowiedź

+2 głosów
odpowiedź 10 kwietnia 2015 przez bossik21 Mądrala (5,750 p.)
wybrane 10 kwietnia 2015 przez Piotr Batko
 
Najlepsza
Dzieje się tak, gdyż na ideone podałeś cały zakres danych wejściowych i ideone wie, że już więcej ich nie będzie, więc nie czeka na kolejne dane w while-u

Podobne pytania

–1 głos
1 odpowiedź 914 wizyt
pytanie zadane 14 marca 2019 w Grafika i multimedia przez Nimplex Początkujący (460 p.)
0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 22 kwietnia 2018 w C# przez kuba802802 Początkujący (380 p.)
0 głosów
1 odpowiedź 890 wizyt
pytanie zadane 30 grudnia 2015 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,460 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...