Cast operator’un Türkçe karşılığı olacak bir kelime aklıma gelmedi. Ancak cast operatoru ÅŸu ÅŸekilde açıklayabiliriz. Bir deÄŸiÅŸken tipini örneÄŸin (Tam sayı-int), bir baÅŸka tipe (virgüllü sayı-float) gibi dönüştürmek isterseniz, o zaman cast operator kullanırız.
Aşağıdaki kodu yazıp derleyin.
#include<stdio.h>
int main( void )
{
int bolunen = 12, bolen = 8;
float bolum;
bolum = bolunen / bolen;
printf("Sonuc: %f\n",bolum);
return 0;
}
Program çıktısı; “Sonuc: 1.000000” olacaktır:
Normalde 1.5 çıkmasını beklediğiniz sonucun, 0.000000 çıkmasının nedeni casting kullanmamamızdır. Bir tam sayıyı, bir başka tam sayıya bölerseniz, sonuç bir başka tam sayı çıkar. Ve C programlama dili, bir virgüllü sayıyı tam sayıya atamaya kalktığınızda, herhangi bir yuvarlama işlemi yapmadan, virgülden sonrası atar.
Cast Operator şu şekilde kullanılmalıdır: degisken_1 = ( tip ) degisken_2;
Elimizdeki bu bilgiye göre programımızı tekrar yazalım.
#include<stdio.h>
int main( void )
{
int bolunen = 12, bolen = 8;
float bolum;
bolum = (float)bolunen / bolen;
printf("Sonuc: %f\n",bolum);
return 0;
}
Sonuç bu sefer, beklediğimiz gibi 1.5 çıkacaktır.
Aşağıdaki örneği inceleyelim:
#include<stdio.h>
int main( void )
{
printf("Sonuc: %f\n", 2 / 4);
return 0;
}
Öğrendiğimiz üzere, bunun da sonucu 0.5 yerine, 0 olarak gözükecektir. Sonucu doğru yazdırmak için (float)2/4 şeklinde yazmanız yeterlidir. Ancak dahi basit bir yöntem olarak 2/4.0 veya 2.0/4 yazarsanız yine aynı sonucu elde edersiniz.Çünkü bu durumda sayılardan bir tanesi float olmaktadır.
Kullanılan deÄŸiÅŸken tiplerinden hangisi büyükse, sonuç o deÄŸiÅŸkenin tipinde döner. Yüksek deÄŸiÅŸken bellekte daha fazla yer kaplamaktadır. Bunun doÄŸal bir sonucu olarakta, domine eden o’dur. DeÄŸiÅŸkenlerin büyüklüğünü daha önceki dersimizde vermiÅŸtik. Ancak hatırlamak açısından, aÅŸağıya bakabilirsiniz.
(DÜŞÜK) char <-> int <-> long <-> float <-> double (YÜKSEK)
Çıkan sonucu, daha düşük bir değişken tipine atamaya kalkarsanız, o zaman veri kaybı yaşanır. Ve örneğin float 1.5 olan sonucu int değişkene 1.0 olarak kaydedilir.
Öğrendiklerinizin pekişmesi için bir program yazalım. Bu programda, klavyeden girilen, bir virgüllü sayının, yuvarlanıp, tam sayı olması gösterilsin:
#include<stdio.h>
int main( void )
{
float girilen_sayi;
printf("Lütfen bir sayı giriniz> ");
scanf("%f",&girilen_sayi);
printf("Sayının yuvarlanmış hali: %d\n", (int)(girilen_sayi+0.5));
return 0;
}
Yorumlar
Yorum Yok
Yorumunuzu Ekleyin
Yorum eklemek için giris yapmalısınız.