Ich bin kein C-Programmierer, aber: Du verwendest lokal uninitialisierte Variablen. Nach meinem (theoretischen) C-Verständnis arbeitest Du damit in einem undefinierten Zustand. C reserviert den Speicherplatz, wenn Du die Variable definierst. Wenn Du die Variable dann ausliest, liest es gnadenlos ungeprüft den Speicher aus, den er reserviert hat. Da steht halt "zufällig" das drin, was vorher in einer anderen lokal definierten Variable drin stand, weil die zufällig in ihrer Laufzeit den gleichen Speicherbereich belegt hatte.
In dem Beispiel aus dem Buch haben sie ja auch einen Zufallswert. Nur halt aus irgendeiner anderen Speicherstelle. Das kommt dann sicher auf Compiler-Version, -Einstellungen, vielleicht die CPU an, wie er die Speicher-Allozierung genau macht.
Wird das in dem Buch danach nicht erklärt? Lösung ist ganz einfach: Nie uninitialisierte Variablen nutzen.
Edit: Ich sehe, in Beitrag 3 hast Du das ähnlich geschrieben. Wenn das Buch das nicht weiter erläutert, dann ist das Buch da einfach Mist.
Die Unabhängigkeit der lokalen Variablen hätte man zeigen können, ohne sie uninitialisiert zu lassen. Durch das Weglassen der Initialisierung hat man (bei Deinen Compilereinstellungen etc.) ironischerweise genau das Gegenteil erreicht. Aber auch das halt nicht verlässlich (über alle Maschinen und Compilereinstellungen hinweg)