Tam Sayı Tipleri C++ üç değişik tam sayı tipine sahiptir: short, int ve long. Her tam sayı tipinin (önceden belli olan) boyutu, ikilik düzende belli bir basamak sayısı sınırı oluşturur.
Tam sayı tiplerinin bu üst ve alt sınırları, kullandığımız bilgisayarın iş
lemcisi, işletim sistemi, derleyici gibi birçok kritere bağlıdır.



Shrt_max 32767
Shrt_min -32768
Ushrt_max 655535
İnt_ max 32767
İnt _min -32768
Uint_max 65535
LONG_MAX 2147483647
LONG_MİN -2147483648
ULONG_MAX 4294967295
Bu değerler her tip için en büyük ve en küçük değerleri göster-
mektedir. Bir tam sayının başına UNSİGNED(işaretsiz) sözcüğünü koyarak kullanarak olursak, negatif değerler almayacağınız belirtmiş olduğumuz yeni bir tip elde etmiş oluruz.
Eğer tamsayıların ikilik düzendeki tutuluşlarına doğrudan
erişmek ve bunu kendiniz yorumlamak zorunda kalırsanız,
derleyicinizin el kitaplarına bakmanız önerilir.
Görüldüğü gibi tamsayı tiplerinin uzunlukları, yani basamak
sayıları, sınırlaı ile ilgili önemli bir bilgi vermektedir. Bu boyut-
ları sizeof sizeof tıpkı + - gibi bir işlemi simgelemektedir ve Size-
of (<vei tipi>) biçiminde kullanılmaktadır.
Karakter Tipleri
C++ ekrana ya da bir kaynağa yazı yazarken kullanabilece-
ğimiz üç çeşit karakter tipi sunmaktadır: schar, char ve wchar.
Bu tiplerin unsigned olanları da vardır. Ancak genel amaçlı olarak
sadece char tipini kullanıyoruz. Ascıı tablosundaki 255 karakter
dışındaki karakterleri (örneğin Japonca karakterler) kullanmak
için ise wchar kullanılır.
Gerçek Sayı Tipleri
Gerçek sayı tipleri foat double, long double’dır. Standart ger-
çek sayı tipi olarak double kullanılır. Bu tip genellikle ıeee64 bit
standardına uygun olarak düzenlenir. Yani 64 basamakta sak-
lanır. Long double tipi sadece yüksek kesinlik isteyen bilimsel
ve mühendislik uygulamalarında kullanılır. Bu tiplerin boyutla-
rını öğrenmek için de sizeof işlemini kullanabilirsiniz.
Belli bir tipten bir değişken, beklenen bir yerde tip bilgisi ol-
mayan bir sabit olduğu zaman, bu sabit o tipte yorumlanmaya
çalışılır buna kendiliğinden tip dönüşümü adı verilir.
Bir veri kaybı söz konusu olabilir.Ancak programcı bu
dönüşümü açıkça belirtecek olursa,yani belirtilmiş tip dönü-
şümü yaparsa;
İnt i =(int ) d;
Bu, satır artık sadece bir uyarı verecektir, belirtilmiş tip dönü-
şümleri dikkatli yapılması gereken şeylerdir.
İşaretçi Tipleri
İşaretçiler,özellikle C’nin en önemli ve aynı zamanda en ko-
lay hata yapılabilen kısmıdır.
C++ ile birlikte, işaretçilere alternatif yollar da eklenmiştir. Bu
işaretçi aşağıdaki gibi tanımlanır;
<Veri tipi * <işaretçi adı>;
Referans Tipleri
C++ işaretçileri alternatif olarak getirdiği diğer yol referans
tipleridir.Tanım aşağıdaki gibidir:
<Tip Adı> & < Referans Adı> =
< Değişken Adı>;
Sözcükleri Tarif Et
C ve C++’da birçok dilde olan sözcük (string) tipi doğrudan
sağlanmamıştır.
“Merhaba” bir sözcük sabiti olarak karşımıza çıkmaktadır.
Bunu çeşitli biçimlerde kullanabiliriz;
Char *p=”merhaba”;
Cout <<*p;
Satırlarının çıktısı;
Merhaba’dır.
Bir sözcüğe karakter işaretçisi ile erişebilmekteyiz. Ancak C ve
C++’ın ayrım gösterdiği bir nokta bulunmaktadır. C’de yukarı-
daki tanıma göre p işaretçisini kullanarak sözcüğü değiştirebil-
mekteyiz. C++’da ise bu bir sabit olarak karşımıza çıkmaktadır.
Typedef
Typdef int tamsayı;
Satırdan sonra
Tamsayı i = 3;
gibi ifadeler kullanılabilecektir.
Typedef sözcüğünü içeren satır int ile aynı özelliklere sa-
hip tamsayı adında yeni bir tipin oluşturulduğunu belirtmekte-
dir. Yazım biçimi typedef < tip ya da yapı tanımı> < yeni tip adı>;
olarak belirtilmektedir. Çoklukla karakterler 1 byte yer kaplar-
lar. O halde; typedef, unsigned, char, byte; satırı ile byte tipine
sahip olmuş olduk. Ancak bunu yeni bir tip olmadığını, üzerin-
deki bütün işlemlerin unsigned char ile olduğunu belirtmek ge-
rekir.
Sıralama Tipleri
Birçok uygulamada da belli bir sistemin durumu önceden belir-
lenmiş sınırlı sayıda değerden biri olmak zorunda olabilir.Böy-
le bir sistemin rahat anlaşılması ve kolaylıkla genişletilebilmesi
için,sistem durum değişkeninin sadece önceden belirlenmiş de-
ğerlerden birisi olmasının garantiye alınması gerekir.
C ve C++’da bunu sağlamak için sıralama tipleri tanımlıyo-
ruz.Bu sıralama tipleri;
Enum<tip başlığı> {sabit listesi} <değişken listesi> biçiminde
tanımlanır. Örneğin;
Enum Gunler [Pazartesi, Salı, Çarşamba, Perşembe, Cuma,
Cumartesi, Pazar] bugün;
Burada günler sıralama tipinden herhangi bir değişken ta-
nımladığımız zaman bu değişkenin değeri Pazartesi - Pazar
aralığında olacaktır.Tanım içinde bugün adında bir değişken ta-
nımladık bile.Ancak derleyici aslında tanımlanmış olan bu sabitlere birer tam sayı da değeri vererek, sıralama tipinden değişkenleri
birer int olarak yorumlayacaktır.
Örneğin;
Enum Gunler [Pazartesi=1,
Sali, Carsamba, Persembe, Cuma, Cumartesi, Pazar= cu-
martesi]
bugün;
Burada pazartesi 1, Salı 2 şeklinde giderken, Cumartesi ve
Pazar 6 değerine sahip olacaktır. Yani Cumartesi ve Pazar ta-
til günleri anımsanmayacaktır. Eğer biz değer vermezsek sabit-
lerin tamsayı karşılıkları 0’dan başlar ve soldan sağa 1’er artar.
Bu sistem C ve C++ arasında bir ayrımı da beraberinde getirir.
C’de sıralama tipi değişkenleri herhangi bir tamsayıya eşitlene-
bilir. Örneğin;
Bugun=8;
Bu örnek C’de geçeli olacaktır ancak C++’da bu satır hatalı
olarak yorumlanacaktır. C++ sıralama tipi değişkenlerin ancak
tip tanımında belirtilen sabitlere eşitlenmesine izin vermektedir.
Bugun = Pazartesi;
gibi. Bu değişiklik sıralama tiplerinde en çok karşılaşılan bir
hatanın kesinlikle saptanabilmesine olanak sağlar.
Yapılar
C’de temel veri tiplerinden birkaç değişken içeren bileşke
yapılar oluşturmak mümkündür.
C++ bunu birkaç ufak kural değişikliği ile desteklemek ile birlikte
aynı amaç için nesne tabanlı paradigma çerçevesinde çok daha
gelişkin araçlar sunmaktadır.
Struct{
İnt yas;
Char * isim;
}bora;
Bora.yas=21;
Bora.isim=”bora”
Bunlar ile bora adında bir yapı
(struct) değişkeni oluşturduk. Bu değişkenin yaş ve isim adında iki
verisi var ve bu veriler birbirin-
den bağımsız biçimde değiştiri-
lebiliyor.
C++’da ise yapılar birer sınıf
(class) olarak varsayılır ve değiş-
kenler dışarıdan erişime açık ol-
maz (veri saklama)
Bora.yas=99; //artık bir hata
Bunu engellemenin bir yolu
C++ derleyicisine yapılan C’de
olduğu gibi yorumlamasını ge-
rektiğini belirtmektedir.
Extern “C” {
Struct Ogrenci{
İnt yas;
Char * isim;
};
}
Ogrenci bora; // C++’da struct
sözcüğüne gerek yok.
Bora.yas=21;
Bora.isim=”Bora”;
Burada Extern sözcüğü ile
derleyici dışındaki bir kaynağın
kullanılacağı ya da standart kuralların geçerli olmayacağı bir
derleme gerektiği anlatılmaktadır. “C parametresi ise sadece
takip eden ifadesini ya da küme parantezi ile belirlenmiş bloğun
C kodu ile anlaşılması gerektiğini açıklamaktadır.
Bir diğer yaklaşım ise kodun C++ derleyici tarafından derle-
nip derlenmediğini sınayıp ona göre davranmaktadır.
Struct ogrenci {
#ifdef_cplusplus
Public:
#endif
İnt yas;
Char * isim;
};
Burada _cplusplus derleyicinin C++ derleyici gibi çalışıp
çalışmadığını belirleyen özel bir sabittir. Eğer C derleyici olara ça-
lışmakta ise bu sabit tanımlanmamış olacaktır. Bu tür sabitlere
belirleyici sabit adı verilir. Derleyicinin derleme anındaki ayarla-
rına göre değişik kodlar derleme olanağı sağlar. Her derleyicide
önceden tanımlanmış bu tür sabit ve makro bulunmaktadır.
Bileşkeler
Bileşkeler yapılar ile oldukça yakın ilişkili olan konular-
dır. Bir bileşke temel olarak bir yapıdır,ancak yapıya ait veriler-
den aynı anda sadece birini kullanabiliriz. Nesne tabanlı bir kod yazan bir C++ programcısının C yapıları ve bileşkeleri kullanmasına gerek yoktur.