CodeBlanks Logo Icon CodeBlanks

Tür dönüşümü

static_cast ve örtük tür dönüşümünü öğrenirsin.

Tür dönüşümü

Bazen bir türdeki değeri başka bir türe çevirmen gerekir: double'ı int'e, int'i char'a vb. C++'ta bunun için static_cast kullanılır.

Sözdizimi: static_cast<hedef_tür>(değer). Örneğin static_cast<int>(9.99) ifadesi 9 sonucunu verir; ondalık kısım kesilir (yuvarlanmaz).

C tarzı dönüşümler ((int)x) C++'ta çalışır ancak önerilmez. static_cast daha güvenlidir: derleme zamanında tür uyumluluğunu denetler ve niyetini açıkça gösterir.

Daraltma dönüşümü

Büyük bir türden küçük bir türe dönüşüme daraltma dönüşümü (narrowing conversion) denir: double'ı int'e çevirmek gibi. Bu dönüşümde veri kaybı olabilir; 9.99 9 olur, .99 kaybolur.

static_cast bu kaybı bilinçli kabul ettiğini gösterir. Süslü başlatma int x{9.99}; ise daraltmayı engeller ve derleme hatası verir.

Ters yön (küçükten büyüğe, örn. int'ten double'a) güvenlidir; veri kaybı olmaz. Yine de static_cast ile açıkça yazmak niyetini belli eder.

Uygulama Ondalığı tam sayıya çevir

main içinde double price = 9.99; tanımı hazır. static_cast<int> ile price'ı int'e çevir ve whole değişkenine ata. Sonra whole değişkenini std::cout ile std::endl kullanarak yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

int main() {
    double price = 9.99;
    // static_cast ile price'ı int'e çevir ve whole'a ata
    // std::cout ile whole yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

int main() {
    double price = 9.99;
    // static_cast ile price'ı int'e çevir ve whole'a ata
    int whole = static_cast<int>(price);
    // std::cout ile whole yazdır
    std::cout << whole << std::endl;
    return 0;
}

Beklenen çıktı

9

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Dönüşümleri eşleştir

Kavram Anlamı
static_cast<int>(9.99) 9
static_cast<double>(5) 5.0
static_cast<char>(65) 'A'
static_cast<int>(true) 1

2 static_cast sözdizimi

Soru
int whole = static_cast<____>(9.99);
Cevap
int whole = static_cast<int>(9.99);

Açıklama: static_cast<int>(9.99) sonucu 9 olur.

3 static_cast<int>(9.99) ifadesinin sonucu nedir?

  • 10 (yuvarlanır)
  • 9 (kesilir) Doğru cevap
  • 9.99 (değişmez)
  • Derleme hatası

Açıklama: static_cast<int> ondalık kısmı keser; 9.99 → 9.

Başlangıç bölümündeki tüm dersler