Tylko nie kompilatorze, proszę wyrażaj się i nie obrażaj swojego kompilatora.
[local] int tmp;
tworzy lokalną zmienną, o nazwie tmp i o nie określonej wartości. Dlatego twój program raz zadziała a raz nie.
PS
- niestaranne formatowanie kodu.
- nieuzasadnione "zawyżone" typy zmiennych
- nie korzystanie z możliwości testowania na ideone [stdin is empty]
PS 2
Dwa pytania kontrolne:
- Czy aby nie jesteś absolwentem "sławetnego" kursu wideo pana Z?
- Czy aby nie napisałeś komentarza pod którymkolwiek zadanniem? Jeżeli tak, to radzę Ci jak najszybciej go przemyśleć i ewentualnie skasować, bo mam zamiar to sprawdzać [a wierz mi, mimo często brakujących tam loginów, jestem w stanie to sprawdzić] i tworzyć czarną listę osób nie przestrzegających zaleceń [4 pkt pod komentarzami] i wtedy zero podpowiedzi na forum dla spamerów.
Jeżeli nie dotyczy Ciebie, to poprostu zignoruj to.
PS 3
Oczywiście u Ciebie zmienna tmp, o którą chodzi nazywa się inaczej.