# # C++ Veri Tipleri

Program yazarken, çeşitli bilgileri saklamak için bir dizi değişkenler kullanırız. Değişkenler, değerleri  bellekte saklamak için ayrılmış bellek bölümleridir. Bu nedenle, bir değişken oluşturduğunuzda hafızada yer ayırmış oluruz.

Karakterler, metinler, tamsayı, ondalıklı sayılar, boolean(true/false) gibi çeşitli veri türlerine ait bilgilerini saklamak isteyebilirsiniz. Değişkenin veri türüne bağlı olarak, işletim sistemi hafızayı ilgili boyutta ayırır.

## 1. Temel Veri Türleri

C++ programcıya, kullanıcı tanımlı veri türlerinin yanı sıra, zengin bir çeşitlilik sunar. Aşağıdaki tabloda yedi temel C++ veri türü  aşağıdaki işaretleri alarak bellekte çeşitli boyutlarda alan tahsis edilmesini sağlar.

* signed
* unsigned
* short
* long

| Tip                | Bellek Boyutu | Değer Aralığı                  |
| ------------------ | ------------- | ------------------------------ |
| char               | 1 byte        | -127 – 127 yada 0 – 255        |
| unsigned char      | 1 byte        | 0 – 255                        |
| signed char        | 1 byte        | -127 – 127                     |
| int                | 4 byte        | -2147483648 – 2147483647       |
| unsigned int       | 4 byte        | 0 – 4294967295                 |
| signed int         | 4 byte        | -2147483648 – 2147483647       |
| short int          | 2 byte        | -32768 – 32767                 |
| unsigned short int | Range         | 0 – 65,535                     |
| signed short int   | Range         | -32768 – 32767                 |
| long int           | 4 byte        | -2,147,483,648 – 2,147,483,647 |
| signed long int    | 4 byte        | long int gibi                  |
| unsigned long int  | 4 byte        | 0 – 4,294,967,295              |
| float              | 4 byte        | +/- 3.4e +/- 38 (\~7 digits)   |
| double             | 8 byte        | +/- 1.7e +/- 308 (\~15 digits) |
| long double        | 8 byte        | +/- 1.7e +/- 308 (\~15 digits) |
| wchar\_t           | 2 yada 4 byte | 1 geniş karakter               |

Aşağıdaki örnekte **`sizeof()`** metodu ile veri tiplerinin bellekte ne kadar alan kapladığını görebilirsiniz. Mevcut örnekte yeni bir satıra geçmek için **`endl`** ve birden fazla veri eklemek için de **`<<`** sembolü kullanılmıştır.

{% tabs %}
{% tab title="Komutlar" %}

```cpp
#include <iostream>
using namespace std;
 
int main() {
    cout <<"Veri Boyutlari" << endl;
    cout << "char : " << sizeof(char) << endl;
    cout << "int : " << sizeof(int) << endl;
    cout << "short int : " << sizeof(short int) << endl;
    cout << "long int : " << sizeof(long int) << endl;
    cout << "float : " << sizeof(float) << endl;
    cout << "double : " << sizeof(double) << endl;
    cout << "wchar_t : " << sizeof(wchar_t) << endl;
    
    system("PAUSE");
    return 0;
}
```

{% endtab %}

{% tab title="Ekran Çıktısı" %}

```
Veri Boyutlari
char : 1
int : 4
short int : 2
long int : 4
float : 4
double : 8
wchar_t : 2
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**`system("PAUSE")`** komutu ile programınızın çalıştıktan sonra hemen kapanmasını engellersiniz. Aksi halde **.exe** dosyasını çalıştırır çalıştırmaz program kapanacaktır.
{% endhint %}

## 2. C++ typedef Kullanımı

**`typedef()`** kullanarak mevcut bir tip için yeni bir isim oluşturabilirsiniz.  Aşağıdaki yazım kullanarak yeni bir tür tanımlamak için basit söz dizimi bulunmaktadır.

```cpp
typedef tip yeniad;
```

**Örnek:** int veri türünü artık elma yazarak kullanmak istiyorsak aşağıdaki gibi yeni bir adlandırma oluşturmalıyız.

```cpp
typedef int elma;
elma yas=25;
```

## 3. C++ Enum Tipler (Enum Kullanımı)

Enum bir tür, isteğe bağlı bir tür adı ve türün değerleri olarak kullanılabilecek bir sıfır veya daha fazla tanımlayıcı kümesidir. Her bir sayıcı, türü numaralandırma olan bir sabittir. Her bir enum değeri bir sayı değerine karşılık gelir.

Bir enumerate oluşturmak için **`enum`** anahtar sözcüğünün kullanımını gerektirir. Söz dizimi aşağıdaki gibidir.

```cpp
enum enumadi { degerler } liste-degiskeni;
```

**Örnek:** Her bir gün değeri bir sayı değerine karşılık gelmektedir.0 pazartesi olmak üzere 4 değeri cumaya gelir. ikinci satırda da `gun` değeri carsamba olarak enum’a aktarılmıştır. İsteğe bağlı olarak da enuma istenilen değer verilebilir (cumartesi=8 gibi).

{% tabs %}
{% tab title="C++" %}

```cpp
#include <iostream>

using namespace std;
 
int main() {

    enum gunler{pazartesi,sali,carsamba,persembe,cuma,cumartesi,pazar} gun;
    gun = carsamba;

    cout << "Haftanin " << gun << ". gunundesiniz." << endl;
    
    system("PAUSE");
    return 0;
}
```

{% endtab %}

{% tab title="Ekran Çıktısı" %}

```
Haftanin 2. gunundesiniz.
```

{% endtab %}
{% endtabs %}

Bu örnekte önemli olan enum içerisinde değişkenlere değer atamadığımız için ön tanımlı olarak 0 dan başladı. Bu sebeple ekrana carsamba gününü 2 olarak yazdı. Biz bunu şu şekilde düzeltebiliriz.

{% tabs %}
{% tab title="C++" %}

```cpp
#include <iostream>

using namespace std;
 
int main() {

    enum gunler{pazartesi=1,sali=2,carsamba=3,persembe=4,cuma=5,cumartesi=6,pazar=7} gun;
    gun = carsamba;

    cout << "Haftanin " << gun << ". gunundesiniz." << endl;
    
    system("PAUSE");
    return 0;
}
```

{% endtab %}

{% tab title="Ekran Çıktısı" %}

```
Haftanin 3. gunundesiniz.
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
İleride yazacağınız büyük programlarda koşul durumlarınız için kontrol değişkenlerini enum ile oluşturarak daha rahat bir programlama yapabilirsiniz. Örneğin `if(x==1)` gibi bir ifade kullanarak bu 1 in neye karşılık geldiğini hatırlamak yerine, `if(x==dogru)` ifadesini kullanarak daha okunaklı program yazmış olursunuz.
{% endhint %}

#### **Enum kullanırken bilinmesi gerekenler:**

* Enum içerisinde değer vermezsek, değerler 0’dan başlar ve birer birer artar.
* Enum’ların varsayılan değer “int”dir.
* Enumları; byte,sbyte, short,ushort, int, uint,long, ulong türlerin oluşturabiliriz.
* Enum içerisine verdiğimiz değerlerde, değişken isimlendirmede dikkat edilen kurallar geçerlidir. Örneğin sayı ile başlayan veya içerisinde boşluk bulunan isimlendirmeler veremeyiz.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://derslik.kerteriz.net/c++/c++-temel-dersler/untitled.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
