Standart C Programlama Dili


1.8. C Deyimleri Ve Program Gövdesi

C programları deyimlerden oluşur. Yazılabilecek en basit deyim bir ifade deyimidir. Bir ifade deyimi, arkasına noktalı virgül konmuş herhangi bir ifadedir. Örneğin,

a + b * c;
i++;

iki ayrı ifade deyimidir; ancak bunlardan ilki pek bir işe yaramaz, oysa ikincisi, yan etkisinden dolayı, bir işe yarar: i’nin değerinin bir artırılmasına neden olur.

Bileşik bir deyim dışında her deyim noktalı virgülle sona erer.

Bir bileşik deyim (ayrıca, bildirimler içerdiği zaman, blok da denir), aşağıdaki gibi çengelli parantezler arasına alınmış bir deyimler sırasıdır. Bileşik deyimden sonra noktalı virgül olmadığına dikkat edin.

{
  bildirimleropt
  deyim1 opt
  deyim2 opt
  
  deyimn opt
}

Sözdizimsel açıdan bir bileşik deyim tek bir deyime eşdeğerdir. İsteğe bağlı olarak, bir bileşik deyimin ilk yürütülebilir deyiminden önce değişken tanımları ve bildirimleri bulunabilir. Tanımların bir bileşik deyim içine konmasının önemli bir sonucu vardır. Yürütme esnasında, bir bileşik deyim içinde tanımlanmış bulunan değişkenler için bloğa girildiğinde bellek ayrılır; bloktan çıkıldığında ise bu bellek bölgesi serbest bırakılır. Eğer bileşik deyim dışında aynı isimde değişkenler varsa, bloğa girildiğinde, bunların kimlikleri geçici olarak unutulur ve yeni tanımlar etkili olur. Bloktan çıkıldığında eski tanımlar etkilerini tekrar kazanırlar. Bu durum içiçe olan bloklar için meydana gelebilir. (Daha güncel C Standartları bir blok içindeki tanım ve bildirimlerin deyimler arasına da konmasına izin vermiştir; ancak bu kitapta böyle bir kullanımdan kaçınılmıştır.)

Şimdilik, bir C programının genel şekli aşağıdaki gibi özetlenebilir:

/* * * * * * * * * * * * * * * * * * * * * * * * * * *\
 *                                                   *
 *  Programın ne yaptığını, kimin tarafından, ne     *
 *  zaman yazıldığını vs. belirten açıklamalar.      *
 *                                                   *
\* * * * * * * * * * * * * * * * * * * * * * * * * * */
bütün önişlemci emirleri
int main (void)
{
  
  veri tanımları
  
  deyimler
  
  return 0;
} /* main */

Program gövdesinin büyük bileşik bir deyimden oluştuğuna dikkat ediniz. Daha sonra anlatılacağı gibi, fonksiyon tanımları da aynı şekilde yazılır, yani ana program da bir bakıma bir fonksiyondur. Genelde, program gövdesinin sonunda return 0; deyimi bulunur. Bu deyim, program biterken işletim sistemine döndüreceği bir başarı durumu değeri içerir. 0 değeri programın beklenen şekilde sonlandığını bildirir; sıfırdan farklı (genelde 1 ile 127 arasında) bir tamsayı ise programın çalışma sırasında bir hata aldığını göstermek için kullanılır.

Aslında main fonksiyonunun sonundaki return 0; deyimi opsiyoneldir; yani derleyici, eğer main fonksiyonunun sonunda return 0; deyimi yoksa, otomatik olarak ekleyecektir. Bu özellik ileride göreceğimiz diğer fonksiyonlar için geçerli değildir ve karışıklık yaratmaması için bu kitaptaki örneklerde genelde return 0; deyimi, gereksiz olmasına rağmen, kullanılmıştır.