İlk durumda i değişkeni anlamlı(!) bir yerde kullanılmadığı için, yani kullanıldığı do-while döngüsü programın akışını/çıktısını değiştirmediği için derleyici bu kısmı optimize eder ve while döngüsünü tamamen koddan kaldırır. Bu durumda bir warning de vermesi lazım tabi, dolayısıyla warning'lere her zaman dikkat etmekte fayda var.
Normalde derleyici optimizasyonları istenen bir şey. Böylece kodda hiçbir değişiklik yapmadan daha hızlı ve az yer kaplayan bir program elde edilebilir. Ama bu durumda olduğu gibi bazen de bu istenmez. Bu durumda volatile ile derleyiciye "ben ne yaptığımı biliyorum, kafana göre optimizasyonlar yapma" demek gerekir.
Aynı etki proje ayarlarından optimizasyonu tamamen kapatarak da elde edebilir, ama dediğim gibi bu çok da istenmez. O nedenle özellikle gömülü sistemlerde volatile kelimesini doğru kullanmak çok önemlidir.