C biliyor musunuz?

C dilinin sözdizimine ne kadar hakimsiniz? Aşağıdaki kurallardan kaç tanesini biliyorsunuz? (Dürüst olun…)

1. Bir bildirimde const ya da volatile belirteçlerini birden fazla kez kullanmak geçerlidir:

2. Dosya bilinirlik alanında (file scope) bir değişken ilk değer verilmemek kaydıyla (tentative definition) birden fazla kez bildirilebilir. Aşağıdaki bildirimler geçerlidir.

3. Parametre değişkeni gösterici (pointer) olan işlev bildirimlerinin aşağıdaki biçimlerde yapılması derleyici açısından bir farklılık oluşturmaz:

Ancak tamamlanmamış türler (incomplete types) için birinci biçim geçerli iken ikinci biçim geçerli değildir:

4. C99 öncesinde bir işlevin gösterici  parametre değişkeninin kendisinin const olması durumunda (const pointer) bu bildirimi [ ] bildirgeci (declarator) ile yapma olanağı yoktu. Bu olanak C99 standartları ile sağlandı. Aşağıdaki bildirimler birbirine eşdeğer:

5. Aşağıdaki bildirimler birbirine eşdeğerdir:

Ancak static anahtar sözcüğünün kullanıldığı bildirim derleyiciye verilen bir ipucu niteliğindedir. Bu durumda derleyici bu işleve adresi gönderilecek dizinin en az 20 boyutunda olacağı yönünde bir bilgi edinir ve bu bilgiyi kullanarak daha iyi bir optimizasyon yapabilir.

6. for döngü deyimiminin birinci kısmında bildirilen isimler ile döngünün ana bloğu içinde bildirilen isimler ayrı bilinirlik alanlarına (scope) sahiptir. C++ dilinde geçerli olmayan aşağıdaki C kodu geçerlidir:

7. İşlev bildirimlerinde ve tanımlarında işlevin geri dönüş değeri türünün yazıldığı yerde bir tür bildirimi yapılabilir. Aşağıdaki kod geçerlidir:
8. İşlev bildirimlerinde ya da tanımlarında parametre parantezi içinde bir tür tanımlaması yapılabilir. Ancak tanımlanan bu türün bilinirlik alanı dosya bilinirlik alanı değildir, işlevin ana bloğu ile sınırlıdır:
9. sizeof işlecinin içinde ve tür dönüştürme işlecinin parantezi içinde tür bildirilebilir:
10. sizeof işlecinin terimi olan ifade (bir tür ismi değil ise) parantez içine alınmak zorunda değildir. sizeof işlecinin terimi olan ifade için derleyici işlem kodu üretmez. Ancak sizeof işlecinin terimi değişken boyutta bir dizi (variable length array) ise bu ifade için işlem kodu üretilir.
Share

Necati Ergin

C ve Sistem Programcıları Derneğinde eğitmen olarak çalışıyor.

Bunlar da ilginizi çekebilir

Kod Eklemek İçin Okuyun