Tür dönüşümü
- C++ kursu
- Başlangıç
- Ders 11/116
- 4 dk
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
#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
#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
int whole = static_cast<____>(9.99);
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.