kod hatalı değil block scope olayı var orada.
publib.boulder.ibm.comama soru garip açıkçası çünkü her zaman 2007 sonucunu vermeyebilir.
{ int y = 2007;}
şeklinde tanımladığında program memory'de 2007 değerini yazar ve block'tan dışarı çıktığında y'yi serbest bırakır.
yani block dışında y değişkenini kullanamazsın.
fakat memory'de hala 2007 değeri beklemektedir. hemen sonrasında yeni bir integer tanımlarsan memory'de y'nin bulunduğu yere cuk diye oturur. haliyle değeri de default olarak 2007 olur.