C Programlama Dili Veri Tipleri ve Örnekler
Veri Tipleri
C programlama dilinde değişkenlerin tipini belirlemek için ve bellekte yer ayırmak için veri tipleri kullanılır. Benzer şekilde fonksiyonları da kullanmadan önce tanımlanması gerekir.
Örn:
|
Veri tipleri, değişkenlerin ve fonksiyonların tiplerini ve boyutlarını belirtir (Fonksiyonlarda geri dönüş değerinin tipini ve boyutunu belirler).
C Programlama Dilinde Veri Tipleri
Tipler | Veri Tipleri |
Temel Veri Tipleri | int, char, float, double |
Enumeration (Sayma) Veri Tipleri | enum |
Türetilmiş Veri Tipleri | pointer (işaretçiler) , array (diziler), structure, union |
Void Veri Tipleri | void |
Temel Veri Tipleri
Tam Sayı Veri Tipi
- Tam sayı tipindeki sayısal değerleri saklamak için kullanılır.
- ‘int’ anahtar kelimesi ile değişken tanımlaması yapılır.
- Bu veri tipi bellekte 2, 4 ya da 8 byte boyutunda yer ayırır. Bu boyut işlemciye göre değişir.
- Eğer 16 bitlik bir işlemci kullanıyorsanız bellekte 2 byte yer ayırır.
- Şuan son kullanıcıların kullandığı bilgisayarlarda ve derleyicilerde genellikle 4 byte yer ayırır.
- -2,147,483,648, +2,147,483,647 aralığında değerler alabilir. Eğer bu sınırdan daha büyük ya da daha küçük değerlere ihtiyaç duyuyorsanız long int (8 byte yer ayırır) ya da short int (2 byte yer ayırır) kullanabilirsiniz.
NOT: int veri tipi ile kayan noktalı (ondalıklı değer) bir değer saklamak isterseniz sadece tam sayı kısmını saklayabilirsiniz. Örn; 15,66 değerini int x=15,66 diye tanımlarsanız x=15 olarak saklar. Bu durumda float ya da double veri tiplerini kullanmanız gerekir.
Karakter Veri Tipi
- Karakter veri tipi sadece bir karakteri saklamak için kullanılır
- Bu veri tipi bellekte 1 byte yer ayırır ve sadece 1 harf saklar.
- ‘char’ anahtar kelimesi ile değişken tanımlaması yapılır.
Örn: A harfini bellekte saklamak istediğimizde char harf = ‘A’; şeklinde saklarız. Birden fazla karakter saklamak istediğinizde (Kelime/kelimeler) farklı bir yöntem kullanmanız gerekir.
Kayan Noktalı (Ondalık Sayı) Veri Tipi
Kayan noktalı veri tipi 2 tipten oluşur. Bunlar,
- float
- double
float Veri Tipi
- float veri tipi ondalıklı değerleri saklamak için kullanılır
- Bellekte 4 byte yer ayırır (Bu değer int ile aynı ve işlemcilere bağlıdır).
- Bu veri tipi ile ondalık değer olarak en fazla 6 basamak kullanılır. Örn; 10.123456.
double Veri Tipi
- double veri tipinin float veri tipinden en önemli farklarından birisi ondalık değer olarak 15 basamak kullanılabilir olması. Örn; 10.123456789012345
- 3E-308, 1.7E+308 aralığında değer alabilir (E-308=10-308, E+308=10+308 ).
NOT: float veri tipi 4 byte, double veri tipi ise bellekte 8 byte yer ayırır. Daha büyük bir değer saklamak isterseniz long double (10 byte yer ayırır) kullanabilirsiniz (long float kullanılmaz).
NOT: Çoğu kaynakta long double için 10 byte yer ayırdığı belirtiliyor. Kendi bilgisayarımda (64 bit işlemci, 64 bit işletim sistemi ve gcc derleyici ile) long double 16 byte yer ayırmakta.
C Programlama Dilinde sizeof() Fonksiyonu:
sizeof() fonksiyonu ile veri tiplerinin bellekte ne kadar alan ayırdığını bulabilirsiniz.
Örn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <stdio.h>; int main() { char karakter; int tamSayi; float ondalikliSayi1; double ondalikliSayi2; printf("char bellekte %d byte yer ayırır \n", sizeof (char)); printf("int bellekte %d byte yer ayırır \n", sizeof (int)); printf("float bellekte %d byte yer ayırır \n", sizeof (float)); printf("double bellekte %d byte yer ayırır \n", sizeof (double)); return 0; } |
Çıktı:
char bellekte 1 byte yer ayırır int bellekte 4 byte yer ayırır float bellekte 4 byte yer ayırır double bellekte 8 byte yer ayırır |
C Programlama Dilinde <limits.h > ve <float.h> Başlık Dosyası
limits.h ve float.h (double ve float için) başlık dosyasını projenize ekleyerek veri tiplerinin max, min değerlerini bulabilirsiniz.
Örn:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <stdio.h>; #include <limits.h>; #include <float.h>; int main() { printf("int min: %d\n", INT_MIN); //limits.h printf("int max: %d\n", INT_MAX); //limits.h printf("char min: %d\n", CHAR_MIN); //limits.h printf("char max: %d\n", CHAR_MAX); //limits.h //%e 10 üzerinde göstermek için kullanılır e+15 = 10^15 printf("double min: %e\n", DBL_MIN); //float.h printf("double max: %e\n", DBL_MAX); //float.h printf("float min: %e\n", FLT_MIN); //float.h printf("float max: %e\n", FLT_MAX); //float.h return 0; } |
Çıktı:
int min: -2147483648 int max: 2147483647 char min: -128 char max: 127 double min: 2.225074e-308 double max: 1.797693e+308 float min: 1.175494e-38 float max: 3.402823e+38 |
float ve double veri tiplerinin ondalık değer olarak maksimum kaç basamak olduğunu öğrenmek için float.h başlık dosyasında bulunan fonksiyonlardan faydalanabiliriz.
Örn:
1 2 3 4 5 6 7 8 9 10 11 |
#include <stdio.h>; #include <float.h>; int main() { printf("float maks. ondalık basamağı: %d\n", FLT_DIG); printf("double maks. ondalık basamağı: %d\n", DBL_DIG); printf("long double maks. ondalık basamağı: %d\n", LDBL_DIG); return 0; } |
Çıktı:
float maks. ondalık basamağı: 6 double maks. ondalık basamağı: 15 long double maks. ondalık basamağı: 18 |
Not: Bazı kaynaklarda long double için ondalık değer olarak maksimum 19 basamak belirtilmiş.
Niteleyiciler
Veri tiplerinin (int, float, double) önüne short, long, unsigned niteliyicileri gelebilir. Bu niteliyiciler bellekte ayrılacak alanı artırır ya da azaltır.
Örn: int bellekte 4 byte yer ayırırken, short int 2 byte yer ayırır.
- Derleyici ve donanıma bağlı olarak short tam sayılar için en az 2 byte, long ise en fazla 8 byte yer ayırır.
- İnt, float, double veri tipleri negatif ve pozitif değerler alabilir. Eğer negatif değer kullanılmayacak ise unsigned niteliyicisi kullanarak negatif değerleri için ayrılan alanı pozitif değerler için kullanabiliriz. Örn; short int -32767 – +32767 aralığında iken unsigned short int 0 – 65535 aralığında değerler alabilir. unsigned için %u kullanarak sadece pozitif değerleri kullanabilirsiniz.
NOT: %u ile scanf’ten bir değer alırken kullanıcı negatif bir sayı girdiğinde bazı derleyicilerde hata verebilir.
C Veri Tipi | Bellekte Ayrılan Alan (Byte) | Aralık |
Char | 1 | –127 – 127 |
int | 2 | –32,767 – 32,767 |
float | 4 | 1E–37 – 1E+37 |
double | 8 | 1E–37 – 1E+37 |
long double | 10 | 1E–37 – 1E+37 |
long int | 4 | –2,147,483,647 – 2,147,483,647 |
short int | 2 | –32,767 – 32,767 |
unsigned short int | 2 | 0 – 65,535 |
signed short int | 2 | –32,767 – 32,767 |
long long int | 8 | –(263 –1) – +(263 –1) |
signed long int | 4 | –2,147,483,647 – 2,147,483,647 |
unsigned long int | 4 | 0 – 4,294,967,295 |
unsigned long long int | 8 | 264 –1 |
*Aralıklar ve bellekte ayrılan alanlar 16 bitlik işlemci içindir. Kaynak https://fresh2refresh.com
Açıklama:
*Yöntem1
char harf; //harf değişkeni char veri tipinde tanımlandı.
//char kullanırken karakteri tek tırnak (‘ ’) arasında yazılması gerekir. harf = ‘C’; //harf değişkenine C harfi atandı. |
*Yöntem2
char harf = ‘C’; //harf değişkeni tanımlarken ayrıca ilk değer ataması da yapılabilir. |
*Yöntem3
char harf = ‘C’, harf2, harfSon; //Birden fazla değişken tanımlaması yapılırken ilk değer ataması da yapılabilir. |
NOT: Günümüzde Bellek fiyatlarının azalması ve boyutlarının çok büyük seviyelere gelmesinden dolayı veri tiplerinin bellekte kapladığı alanlara fazla dikkat edilmese de bu olay aslında çok önemlidir. Yazacağınız programın basit ve performans odaklı olmasına dikkat ediniz ve gereksiz yere bellek kullanımı yapmamaya çalışınız. En iyi program minumum bellek kullanan ve daha çok işlemciden faydalanan programdır.
Diğer veri tipleri ileriki konularda anlatılacaktır.
Leave a reply
Lütfen yorum için giriş yap ve yakayıt ol Teşekkürler .