Hm..Ne bih rekao.
Iteracija se odvija sve dok je ulog manji od 1 ili ulog veci od 100 i tek posle petlje se funkciji vraca vrednost varijable ulog.
A ako korisnik unese char umesto int dodela se uopste ne izvrsava, tj. varijabla ulog ce imati vrednost kakvu je imala pre dodele, a imala je:
Code:
int ulog=0;
Tako da je u slucaju unosenja slova, ovaj uslov ispunjen:
Code:
(ulog < 1 || ulog > 100)
Posto je varijabla ulog i dalje 0, petlja se ponavlja. U baferu se nalazi prethodni (nepravilan) unos tako da se automatski ponovo ucita u varijablu ulog, i ponavlja se ista prica..
Edit:
Ovako se nece javljati beskonacna petlja:
Code:
#include<cstdlib>
...
cin >> ulog;
if (cin.fail())
break;
}
while (ulog < 1 || ulog > 100);
....
Ili jednostavno u definiciji funkcije pri deklarisanju varijable ulog, inicijalizuj je odmah (na primer) na 1.
[Ovu poruku je menjao SuPeR_MaSteR dana 27.12.2006. u 20:32 GMT+1]