08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

sizeof İşlecinin Ürettiği Değerin Türü<br />

sizeof işlecinin ürettiği değer unsigned int türdendir. İşlecin ürettiği değerin türünü signed<br />

int kabul etmek hatalıdır. İşlecin ürettiği değer, signed int türden negatif bir sayıyla<br />

işleme sokulduğunda tür dönüşümü işaretsiz yöne yapılır:<br />

-2 * sizeof(int)<br />

-2, işaretli int türden bir değişmezdir. sizeof(int) ifadesinin ürettiği değer ise unsigned int<br />

türden 4 değeridir. İşlem öncesi yapılacak otomatik tür dönüşümü ile -2 değeri unsigned<br />

int türüne dönüştürülür. İşlem unsigned int türde yapılır. Yani işlemin sonucu 8 olmaz.<br />

[Aslında sizeof operatörünün ürettiği değer standart bir typedef türü olan size_t türündendir. Standart typedef<br />

türleri "Tür İsimleri Bildirimleri ve typedef Belirleyicisi " isimli bölümde ele alınıyor.]<br />

sizeof İşlecinin Terimi Olan İfadenin Yan Etkisi<br />

sizeof işlecinin terimi olan ifade yan etki göstermez. Aşağıdaki örneği inceleyin:<br />

#include <br />

int func()<br />

{<br />

printf("func()\n");<br />

}<br />

return 1;<br />

int main()<br />

{<br />

unsigned int x = sizeof(func());<br />

printf("x = %u\n", x);<br />

}<br />

return 0;<br />

main işlevi içinde, func işlevi çağrılmaz. sizeof işleci, terimi olan ifadeye yalnızca bir tür<br />

bilgisi olarak bakar. Örnek kodda yer alan<br />

func()<br />

ifadesinin türü int türüdür.<br />

sizeof İşleci Ne Amaçla Kullanılır<br />

Belirli bir türden nesnenin bellekte kaç byte yer kaplayacağı, sistemden sisteme farklılık<br />

gösterebilir. Tür uzunluğu güvence altında bulunan tek doğal tür, char türüdür. char<br />

türden bir nesne tüm sistemlerde 1 byte yer kaplar. Tür uzunluklarının sistemden sisteme<br />

farklı olabilmesi, bazı uygulamalarda taşınabilirlik sorunlarına yol açabilir. sizeof işlecinin,<br />

genel olarak bu tür taşınabilirlik sorunlarını ortadan kaldırmaya yönelik olarak kullanıldığı<br />

söylenebilir.<br />

228

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!