> Fyller med värdet noll eller tömmer, vad är skillnaden?
Det är en helt fundamental skillnad!

En variablel *kan* inte vara tom, den har alltid ett värde.
Man kan ha en separat flagga som signalerar att tmp är "tom",
men tmp i sig kan ju ju då innehålla vad som helst. Och "tom"
betyder mer korrekt "för tillfället oanvänd", vilket är viktigare.
Nej, det är sättet att se på det hela, att du faktiskt "tömmer"
någonting, som är fel.
> tmp blir lika med 0 och jag kan använda den i en loop...
Du menar att du någon annarstans i programmet *förutsätter*
att tmp = 0 ? Helgalet och "a bug waiting to happen"...

*Självklart* ska loopen självt initiera tmp till 0 och det ska inte
spela någon som helst roll vilket värde som finns kvar från någon
annan rutin som också använder tmp.
> eller som ovan eller något annat. Resultatet är exakt
> samma som när jag initierar variabeln med värdet 0.
Ja, slutresultatet, när det fungerar, och med lite tur, kanske
blir detsamma, men det gör det inte mindre fel i grunden.