C Veri Tipleri & Format Belirleyiciler

“Bir değişkenin bellekte kaç byte yer kapladığını bilmiyorsan, hata yapmayı göze alıyorsun demektir.”
Bu ifade C programlamada neden veri tipleri ve format belirleyicilerin kritik olduğunu çok iyi özetliyor. Özellikle junior geliştiriciler için bu konu çoğu zaman karışık gelir. Oysa doğru şekilde öğrenildiğinde C dilini daha güvenli, performanslı ve öngörülebilir kullanmak mümkün olur.

Bu içerikte C veri tiplerini sistematik şekilde inceleyecek, format belirleyicilerin nasıl çalıştığını anlayacak ve Python–JavaScript gibi modern dillerle karşılaştırmalı örneklerle kavrayacaksınız.

C Veri Tiplerinin Temelleri

C Veri Tipleri
C Veri Tipleri

2.1. Temel (Primitive) Veri Tipleri

C veri tipleri donanım seviyesine yakındır; bu yüzden bellek yönetimi açısından yüksek kontrol sağlar.

Sayısal Veri Tipleri

Veri TipiAçıklamaBoyut
intTam sayılar2–4 byte
floatTek duyarlıklı ondalık4 byte
doubleÇift duyarlıklı ondalık8 byte
short, longDeğiştirilmiş tam sayı aralığıMimariye bağlı

float yerine gerekmedikçe double kullanılan modern işlemcilerde performans kaybı minimaldir; fakat gömülü sistemler için bu durum değişir.

Karakter Ve Mantıksal Veri Tipleri

  • char: 1 byte, ASCII tabanlı karakter saklar.

  • bool: <stdbool.h> ile kullanılabilir.

2.2. Türetilmiş Veri Tipleri

Diziler, Pointer’lar ve Yapılar

C dilinde diziler bellekte ardışık bloklardır ve doğrudan format belirleyicilerle birlikte kullanılabilir.

int nums[3] = {1, 2, 3};
printf("%d", nums[0]);

Pointer’larda format belirleyici %p kullanılır.

3. Format Belirleyiciler Nedir?

C Veri Tipleri & Format Belirleyiciler
C Veri Tipleri & Format Belirleyiciler

C Veri tipleri  programın ekrana yazdırdığı veya kullanıcıdan aldığı verinin türünü anlamlandırmak için kullanılır. printf ve scanffonksiyonlarının doğru çalışmasında temel rol oynarlar.

3.1. En Yaygın Format Belirleyiciler

C Veri TipiFormat BelirleyiciAçıklama
int%dTam sayı yazdırma
float%fOndalık sayı
double%lfDaha yüksek hassasiyet
char%cTek karakter
char[]%sString
Pointer%pBellek adresi

3.2. Hatalar ve Dikkat Edilmesi Gerekenler

Yanlış format belirleyici kullanımı

int x = 15;
printf("%f", x); // Yanlış

Bu örnek bellekten yanlış şekilde veri okunmasına neden olabilir.

Format Güvenliği

scanf için tampon taşması (buffer overflow) riskine dikkat edin:

char name[10];
scanf("%9s", name); // Güvenli kullanım

4. Kod Örnekleri (Açıklamalı)

4.1. Python ile Format Belirleyici Benzetimi

C’deki format belirleyici mantığı Python’da format() veya f-string ile benzer şekilde yapılabilir.

age = 25
height = 1.82

print("Yaş: {}, Boy: {:.2f}".format(age, height))
Satır Satır Açıklama:
  • age → tam sayı

  • height → ondalık sayı

  • {} → C’deki %d karşılığı

  • {:.2f}%0.2f ile aynıdır

Performans Notu:
f-string’ler Python’da formatlama açısından en hızlı yöntemdir.

4.2. JavaScript ile Formatlama Mantığı

JavaScript C gibi tip zorunluluğu istemez, ancak formatlama manuel yapılır.

let price = 19.99;
console.log(`Fiyat: ${price.toFixed(2)} TL`);
Satır Satır Açıklama:
  • toFixed(2) → C’deki %.2f karşılığı

  • Template literal formatlamayı temiz hâle getirir.

SSS (FAQ)

1. C dilinde en sık kullanılan format belirleyici nedir?

En sık kullanılan format belirleyici %d’dir çünkü tam sayılar birçok algoritmada temel yapı taşıdır.

2. %f ve %lf arasındaki fark nedir?

%ffloat yazdırır
%lfdouble için kullanılır.

3. scanf kullanırken nelere dikkat edilmeli?

Buffer overflow riskine karşı karakter dizileri için sınır (%9s gibi) belirtilmelidir.

4. String yazdırmak için neden %s kullanılır?

%s, null-terminated (sonu ‘\0’ ile biten) C string yapısını tanır.

5. Format belirleyiciler kullanılmazsa ne olur?

Yanlış tipte veri okunur/yazılır ve program davranışı belirsiz olur.

Kaynaklar:

İlgili Yazılar