C Programlama Veri Tipleri
C Programlama Veri Tipleri
C Programlama
C Veri Tipleri (Data Types)
Önceki derslerde C Programlama Dilin'de tanımladığımız her bir değişkenin bir tipi olması gerektiğini öğrenmiştik.
Temel Veri Tipleri (Primary Data Type )
- char : karakter
- int : tamsayılar
- float : ondalıklı gerçek sayı (6.basamağa kadar hassasiyet)
- double : ondalıklı gerçek sayı (10. basamağa kadar hassasiyet)
- void : boş veri tipi
C Programlama Dilin'de temel veri tiplerinin yanı sıra birde özel veri tipleri bulunmaktadır.
Özel Veri Tipleri (Secondary Data Type)
- array : dizi
- pointer : işaretci
- structure : veri yapısı
- enum : sıralanmış değerler
- union: farklı tür ve boyutlardaki veriler
Temel Veri Tipleri (Primary Data Type )
CHAR Veri Tipi : Karakter değişkenlerini tutmak için tasarlanmış veri tipidir. char veri tipinde değişkenler bellekte 1 byte alan kaplamaktadırlar. char veri tipi karakter değişkenlerini saklamasına rağmen sayısal bir veri tipidir. Çünkü C Programlama Dilinde her karakterin sayısal bir karşılığı vardır.En basit anlatımla karakterlerin sayısal karşılıkları American Standart Kodlaması olarak bilinen ASCII (American Standart Code for Information Interchange) tablosudur. ASCII kodlama tablosu sadece C diline özgü değil bütün programlama dillerinde karakterlerin sayısal karşılığını tutmak için kullanılmaktadır.
ASCII Tablosu
ASCII tablosunda 72 sayısının H karakterine 104 sayısınında h karakterine karşılık geldiğini görmekteyiz. Örneğin char ornekch = 'H' ifadesinde ornekch isimli karakter değişkene ASCII tablosunda H harfinin karşılığı 40 sayısını atamaktadır. Yazmış olduğumuz kod parçasında görüldüğü gibi karakter değeri tek tırnak işaretleri arasındadır. Aynı şekilde chat ornekch = '72' yazım şekliylede ornekch isimli karakter değişkene atama yapabiliriz. char tipindeki değişkenlerin ASCII karşılığını printf fonksiyonuyla yazdırmak istediğimizde %c niteleyicisini kullanmalıyız.
printf("ornekch degiskeninin karakter degeri:%cn",ornekch);
Örnek char veri tipi
#include <stdio.h>
int main(int argc, char** argv)
{
char ornekch1 ='H';
char ornekch2 =67;
char ornekch3 =84;
printf("ornekch1 degiskeninin karakter degeri:%cn", ornekch1);
printf("ornekch1 degiskeninin sayi degeri:%dnn", ornekch1);
printf("ornekch2 degiskeninin karakter degeri:%cn", ornekch2);
printf("ornekch2 degiskeninin sayi degeri:%dnn", ornekch2);
printf("ornekch3 degiskeninin karakter degeri:%cn", ornekch3);
printf("ornekch3 degiskeninin sayi degeri:%dnn", ornekch3);
return 0;
}
Programın Çıktısı
INT Veri Tipi : Tamsayı değerlerini tutmak için kullanılır. int veri tipi bellekte en az 2 byte veya 16 bit yer tutarlar.İngilizcede tamsayı anlamına gelen integer kelimesinden gelmektedir. Program içerisinde int tipine sahip ts adında bir tamsayı değişken tanımlayarak kullanımını görelim.
Örnek int veri tipi
#include <stdio.h>
int main(int argc, char** argv)
{
signed int ts = 226;
printf("ornek int veri tipi ts degiskeninin degeri: %dn", ts);
return 0;
}
Programın Çıktısı
printf içerisinde tam sayı tipinde değişkenler %d biçim niteleyicisiyle yazılırlar.
FLOAT Veri Tipi : Ondalık sayılarımızı tutmak için kullanırız. Ondalık sayılar için kullanılan temel iki veri tipinden birisi float'dır. float veri tipini diğerinden farklı kılan özelliği virgülden sonra 6 sayıya kadar sayıları bellekte tutabilen bir veri tipi olmasıdır. float veri tipinde değişkenler bellekte en az 4 byte veya 32 bit yer tutarlar. float tipinde değişkenler %f biçim niteleyicisiyle yazılırlar.
DOUBLE Veri Tipi : Long Float olarak da bilinir. Aynen float gibi ondalık sayılarımızı tutmak için kullanırız. float ve double arasındaki fark ise double veri tipinin çift duyarlılıklı ve 8 byte veya 64 bit yer kaplamasıdır. Ayrıca double veri tipinde virgülden sonra 10.basamağa kadar hassasiyetteki sayılar tutulabilir. Tıpkı float tipindeki değişkenlerde kullandığımız gibi double veri tipinde de biçim niteleyicisi olarak %f ve %lf kullanılır. Double tipi, ondalıklı sayıların tanımlanmasında kullanılır. Ondalıklı sayılaryapıları gereği tamsayıları da kapsar.
Örnek float ve double veri tipleri
#include <stdio.h>
#include <conio.h>
int main()
{
float d = 2.7;
double e = 27.7;
printf("f = %fn", d);
printf("d = %lfn",e);
getch();
return 0;
}
Programın Çıktısı
VOID Veri Tipi : Genelde değişken tanımlanırken kullanılmaz. Amacı fonksiyonların parametre almadığını veya parametre döndürmediğini göstermek için kullanılır.
Temel Veri Tiplerinin Türevleri
C Programlama dilinde temel veri tiplerinin yetersiz kaldığı durumlarda bu tiplerin önüne signed, unsigned, long ve short anahtar kelimeleriyle, temel veri tipleri esas alınarak yeni veri tipleri oluşturulmuştur..Veri tiplerinin byte olarak boyutlarını ve sınırlarını dönüştürebilirsiniz. Bu dönüşümlerde kullanılabilecek veri türleri aşağıda gösterilmektedir:
Değiştirici Veri Türü
signed char, int
unsigned char, int
long int, double
short int
Değişken tanımlamalarında signed değiştirici ifadesi kullanıldığında, tanımlanan değişkenin ikili sayı sistem değeri içinde en üst sırada yer alan bit'i işaret bit'i olarak kullanılır. Bu değer 0 olursa sayı pozitif, 1 olursa sayı negatif olur. Ancak, bu durumda bir bit sayının işaretini belirlemek için ayrıldığından tanımlanan değişkene atanacak değer otomatik olarak azalır.
Örneğin double ifadesinin önüne long ifadesi eklendiğinde oluşturulan long double veri tipi bellekte double için kullanılan 8 byte olan alanı 10 byte'a çıkarır. Değiştirici kelimeler her veri tipinin önünde kullanılamazlar. Dönüştürme işlemi için geçiçi bellek alanı kullanılır; dönüştürülen değer kullanıldıktan sonra o alan serbest bırakılır.
Karekter veri tipi char dışındaki diğer tamsayı veri tiplerinde unsigned veya signed ifadesi kullanılmazsa default olarak signed kabul edilir. char veri tipinde ise değişken tanımladığımızda değişkenin signed'mı unsigned'mı olacağı derleyiciye bırakılmıştır.
Temel veri tiplerinin yetersiz kaldığı durumlarda anahtar kelimeleri kullandığımız zaman, printf() ve scanf() fonksiyonları farklı biçim niteleyicileri kullanırlar.
Örnekler yer değiştirme, veri tipi dönüşümü ve biçim niteleyici kullanımı
main()
{
int x1;
double x2;
x2 = 332.544;
x1 = x2;
printf("%f %d %d", x2, x1, (int) x2);
}
Programımızda double bir değişkene atanan değeri, int bir değişkene atanır. İki değişkende değerini double değişken değerine yer değiştirme (type cast) metodu ile geçici olarak int bir değere çevirerek tekrar ekrana yazar. Atama işlemlerinde, atama işaretinin sol tarafında type cast metodu kullanılamaz.
#include "stdio.h"
main()
{
unsigned int x1;
float x2;
x1 = 32648;
x2 = 295.54;
printf("%f", x1*x2);
}
Örnekte programımız unsigned int bir değerle float bir değerin çarpımını ekrana yazar. C Programlama dilinde float ve unsigned int değerleri aynı ifade içinde kullandığından sonuç float bir değer olarak karşımıza çıkacaktır.
#include "stdio.h"
main()
{
int x1, x2;
float x3;
x1 = 24, x2 = 2, x3 = 53;
printf("%f", x3/(x1/x2));
}
Tip dönüşümü, bir ifade içinde işlem yapıldığından, önce x1 ve x2 değişken değerlerinin bölme sonucu olan 12 değeri elde edilir. Bunun nedeni her iki sayınında int bir değer olmasıdır. Daha sonra float olarak tanımlanmış olan x3 12'ye bölündüğünde, program işlem sonucunu ondalık hanesini içerecek şekilde verir.
C Programlama Dilin'de , bir ifade içinde bir char veya short int veri kullanıldığında, bu verilerin değerleri int değere çevrilir. Otomatik veri çeşidi değişimleri yapıldıktan sonra, program ifadelerde yer alan bütün verileri aynı ifade içindeki en büyük verinin çeşidine çevirir.
C Veri Tipleri (Data Types)
Önceki derslerde C Programlama Dilin'de tanımladığımız her bir değişkenin bir tipi olması gerektiğini öğrenmiştik.
Temel Veri Tipleri (Primary Data Type )
- char : karakter
- int : tamsayılar
- float : ondalıklı gerçek sayı (6.basamağa kadar hassasiyet)
- double : ondalıklı gerçek sayı (10. basamağa kadar hassasiyet)
- void : boş veri tipi
Özel Veri Tipleri (Secondary Data Type)
- array : dizi
- pointer : işaretci
- structure : veri yapısı
- enum : sıralanmış değerler
- union: farklı tür ve boyutlardaki veriler
CHAR Veri Tipi : Karakter değişkenlerini tutmak için tasarlanmış veri tipidir. char veri tipinde değişkenler bellekte 1 byte alan kaplamaktadırlar. char veri tipi karakter değişkenlerini saklamasına rağmen sayısal bir veri tipidir. Çünkü C Programlama Dilinde her karakterin sayısal bir karşılığı vardır.En basit anlatımla karakterlerin sayısal karşılıkları American Standart Kodlaması olarak bilinen ASCII (American Standart Code for Information Interchange) tablosudur. ASCII kodlama tablosu sadece C diline özgü değil bütün programlama dillerinde karakterlerin sayısal karşılığını tutmak için kullanılmaktadır.
ASCII Tablosu |
ASCII tablosunda 72 sayısının H karakterine 104 sayısınında h karakterine karşılık geldiğini görmekteyiz. Örneğin char ornekch = 'H' ifadesinde ornekch isimli karakter değişkene ASCII tablosunda H harfinin karşılığı 40 sayısını atamaktadır. Yazmış olduğumuz kod parçasında görüldüğü gibi karakter değeri tek tırnak işaretleri arasındadır. Aynı şekilde chat ornekch = '72' yazım şekliylede ornekch isimli karakter değişkene atama yapabiliriz. char tipindeki değişkenlerin ASCII karşılığını printf fonksiyonuyla yazdırmak istediğimizde %c niteleyicisini kullanmalıyız.
printf("ornekch degiskeninin karakter degeri:%cn",ornekch);
Örnek char veri tipi
#include <stdio.h>
int main(int argc, char** argv)
{
char ornekch1 ='H';
char ornekch2 =67;
char ornekch3 =84;
printf("ornekch1 degiskeninin karakter degeri:%cn", ornekch1);
printf("ornekch1 degiskeninin sayi degeri:%dnn", ornekch1);
printf("ornekch2 degiskeninin karakter degeri:%cn", ornekch2);
printf("ornekch2 degiskeninin sayi degeri:%dnn", ornekch2);
printf("ornekch3 degiskeninin karakter degeri:%cn", ornekch3);
printf("ornekch3 degiskeninin sayi degeri:%dnn", ornekch3);
return 0;
}
Programın Çıktısı
INT Veri Tipi : Tamsayı değerlerini tutmak için kullanılır. int veri tipi bellekte en az 2 byte veya 16 bit yer tutarlar.İngilizcede tamsayı anlamına gelen integer kelimesinden gelmektedir. Program içerisinde int tipine sahip ts adında bir tamsayı değişken tanımlayarak kullanımını görelim.
Örnek int veri tipi
#include <stdio.h>
int main(int argc, char** argv)
{
signed int ts = 226;
printf("ornek int veri tipi ts degiskeninin degeri: %dn", ts);
return 0;
}
printf içerisinde tam sayı tipinde değişkenler %d biçim niteleyicisiyle yazılırlar.
FLOAT Veri Tipi : Ondalık sayılarımızı tutmak için kullanırız. Ondalık sayılar için kullanılan temel iki veri tipinden birisi float'dır. float veri tipini diğerinden farklı kılan özelliği virgülden sonra 6 sayıya kadar sayıları bellekte tutabilen bir veri tipi olmasıdır. float veri tipinde değişkenler bellekte en az 4 byte veya 32 bit yer tutarlar. float tipinde değişkenler %f biçim niteleyicisiyle yazılırlar.
DOUBLE Veri Tipi : Long Float olarak da bilinir. Aynen float gibi ondalık sayılarımızı tutmak için kullanırız. float ve double arasındaki fark ise double veri tipinin çift duyarlılıklı ve 8 byte veya 64 bit yer kaplamasıdır. Ayrıca double veri tipinde virgülden sonra 10.basamağa kadar hassasiyetteki sayılar tutulabilir. Tıpkı float tipindeki değişkenlerde kullandığımız gibi double veri tipinde de biçim niteleyicisi olarak %f ve %lf kullanılır. Double tipi, ondalıklı sayıların tanımlanmasında kullanılır. Ondalıklı sayılaryapıları gereği tamsayıları da kapsar.
DOUBLE Veri Tipi : Long Float olarak da bilinir. Aynen float gibi ondalık sayılarımızı tutmak için kullanırız. float ve double arasındaki fark ise double veri tipinin çift duyarlılıklı ve 8 byte veya 64 bit yer kaplamasıdır. Ayrıca double veri tipinde virgülden sonra 10.basamağa kadar hassasiyetteki sayılar tutulabilir. Tıpkı float tipindeki değişkenlerde kullandığımız gibi double veri tipinde de biçim niteleyicisi olarak %f ve %lf kullanılır. Double tipi, ondalıklı sayıların tanımlanmasında kullanılır. Ondalıklı sayılaryapıları gereği tamsayıları da kapsar.
#include <stdio.h>
#include <conio.h>
int main()
{
float d = 2.7;
double e = 27.7;
printf("f = %fn", d);
printf("d = %lfn",e);
getch();
return 0;
}
Programın Çıktısı
VOID Veri Tipi : Genelde değişken tanımlanırken kullanılmaz. Amacı fonksiyonların parametre almadığını veya parametre döndürmediğini göstermek için kullanılır.
Temel Veri Tiplerinin Türevleri
C Programlama dilinde temel veri tiplerinin yetersiz kaldığı durumlarda bu tiplerin önüne signed, unsigned, long ve short anahtar kelimeleriyle, temel veri tipleri esas alınarak yeni veri tipleri oluşturulmuştur..Veri tiplerinin byte olarak boyutlarını ve sınırlarını dönüştürebilirsiniz. Bu dönüşümlerde kullanılabilecek veri türleri aşağıda gösterilmektedir:
Değiştirici Veri Türü
signed char, int
unsigned char, int
long int, double
short int
Değişken tanımlamalarında signed değiştirici ifadesi kullanıldığında, tanımlanan değişkenin ikili sayı sistem değeri içinde en üst sırada yer alan bit'i işaret bit'i olarak kullanılır. Bu değer 0 olursa sayı pozitif, 1 olursa sayı negatif olur. Ancak, bu durumda bir bit sayının işaretini belirlemek için ayrıldığından tanımlanan değişkene atanacak değer otomatik olarak azalır.
Örneğin double ifadesinin önüne long ifadesi eklendiğinde oluşturulan long double veri tipi bellekte double için kullanılan 8 byte olan alanı 10 byte'a çıkarır. Değiştirici kelimeler her veri tipinin önünde kullanılamazlar. Dönüştürme işlemi için geçiçi bellek alanı kullanılır; dönüştürülen değer kullanıldıktan sonra o alan serbest bırakılır. Karekter veri tipi char dışındaki diğer tamsayı veri tiplerinde unsigned veya signed ifadesi kullanılmazsa default olarak signed kabul edilir. char veri tipinde ise değişken tanımladığımızda değişkenin signed'mı unsigned'mı olacağı derleyiciye bırakılmıştır.
Temel veri tiplerinin yetersiz kaldığı durumlarda anahtar kelimeleri kullandığımız zaman, printf() ve scanf() fonksiyonları farklı biçim niteleyicileri kullanırlar. Örnekler yer değiştirme, veri tipi dönüşümü ve biçim niteleyici kullanımı
Programımızda double bir değişkene atanan değeri, int bir değişkene atanır. İki değişkende değerini double değişken değerine yer değiştirme (type cast) metodu ile geçici olarak int bir değere çevirerek tekrar ekrana yazar. Atama işlemlerinde, atama işaretinin sol tarafında type cast metodu kullanılamaz.
Örnekte programımız unsigned int bir değerle float bir değerin çarpımını ekrana yazar. C Programlama dilinde float ve unsigned int değerleri aynı ifade içinde kullandığından sonuç float bir değer olarak karşımıza çıkacaktır.
Tip dönüşümü, bir ifade içinde işlem yapıldığından, önce x1 ve x2 değişken değerlerinin bölme sonucu olan 12 değeri elde edilir. Bunun nedeni her iki sayınında int bir değer olmasıdır. Daha sonra float olarak tanımlanmış olan x3 12'ye bölündüğünde, program işlem sonucunu ondalık hanesini içerecek şekilde verir.
C Programlama Dilin'de , bir ifade içinde bir char veya short int veri kullanıldığında, bu verilerin değerleri int değere çevrilir. Otomatik veri çeşidi değişimleri yapıldıktan sonra, program ifadelerde yer alan bütün verileri aynı ifade içindeki en büyük verinin çeşidine çevirir.
Örneğin double ifadesinin önüne long ifadesi eklendiğinde oluşturulan long double veri tipi bellekte double için kullanılan 8 byte olan alanı 10 byte'a çıkarır. Değiştirici kelimeler her veri tipinin önünde kullanılamazlar. Dönüştürme işlemi için geçiçi bellek alanı kullanılır; dönüştürülen değer kullanıldıktan sonra o alan serbest bırakılır. Karekter veri tipi char dışındaki diğer tamsayı veri tiplerinde unsigned veya signed ifadesi kullanılmazsa default olarak signed kabul edilir. char veri tipinde ise değişken tanımladığımızda değişkenin signed'mı unsigned'mı olacağı derleyiciye bırakılmıştır.
Temel veri tiplerinin yetersiz kaldığı durumlarda anahtar kelimeleri kullandığımız zaman, printf() ve scanf() fonksiyonları farklı biçim niteleyicileri kullanırlar. Örnekler yer değiştirme, veri tipi dönüşümü ve biçim niteleyici kullanımı
main()
{
int x1;
double x2;
x2 = 332.544;
x1 = x2;
printf("%f %d %d", x2, x1, (int) x2);
}
Programımızda double bir değişkene atanan değeri, int bir değişkene atanır. İki değişkende değerini double değişken değerine yer değiştirme (type cast) metodu ile geçici olarak int bir değere çevirerek tekrar ekrana yazar. Atama işlemlerinde, atama işaretinin sol tarafında type cast metodu kullanılamaz.
#include "stdio.h"
main()
{
unsigned int x1;
float x2;
x1 = 32648;
x2 = 295.54;
printf("%f", x1*x2);
}
Örnekte programımız unsigned int bir değerle float bir değerin çarpımını ekrana yazar. C Programlama dilinde float ve unsigned int değerleri aynı ifade içinde kullandığından sonuç float bir değer olarak karşımıza çıkacaktır.
#include "stdio.h"
main()
{
int x1, x2;
float x3;
x1 = 24, x2 = 2, x3 = 53;
printf("%f", x3/(x1/x2));
}
Tip dönüşümü, bir ifade içinde işlem yapıldığından, önce x1 ve x2 değişken değerlerinin bölme sonucu olan 12 değeri elde edilir. Bunun nedeni her iki sayınında int bir değer olmasıdır. Daha sonra float olarak tanımlanmış olan x3 12'ye bölündüğünde, program işlem sonucunu ondalık hanesini içerecek şekilde verir.
C Programlama Dilin'de , bir ifade içinde bir char veya short int veri kullanıldığında, bu verilerin değerleri int değere çevrilir. Otomatik veri çeşidi değişimleri yapıldıktan sonra, program ifadelerde yer alan bütün verileri aynı ifade içindeki en büyük verinin çeşidine çevirir.