C# İnt İle Int32
-
Yazilimci bunu yazdısiyahbereli bunu yazdıDuPi bunu yazdısiyahbereli bunu yazdıDuPi bunu yazdı
Hocam Console.ReadLine() geriye string üreten bir fonksiyon.
hocam şöylemi demek istiyorsun. Console.ReadLine() yazdığında yukarıdaki değişken ne olursa olsun string döner.? bu yüzden başına Int32 koyuyoruz ? niçin int32 de sadece int değil dersek sanrıım string bir değer int dönmüyor diyeceksiniz inşallah doğru anlamışımdır. ?
int32, int16, int64 kullanabilirsin bu alacağın int değerinin boyutu ile alakalı.
şöyle tekrar söyleyeyim.
sen int türünde bir değişken tanımladın.
klavyeden değer vermek istedin.
fakat bir saniye klavyeden okunan tüm değerler string türündedir!
o zaman onu int türüne dönüştürmen gereklidir.
işte o zaman Convert kullanman gerektiğini anlıyorsun.
@AdReNaLiNe dediği olayda şu sen a harfine bassanda bunu int türüne çevirmeye çalışacak bazı dille bunu 65-97 olarak alır ama maalesef c# Convert hatası verecektir.
o yüzden @AdReNaLiNe nin verdiği kodu kullanmak daha mantıklı.
yani benim yukarıdaki basic koda istinaden 1000 tane değişkende tanımlamış olsam kullanıcı bir rakam gireceğinde o rakam string olarak bana dönecek, bende bana rakam dönsün istiyorsam direk int diyemiyorum mutlaka Int32,64 gibi bir değişkene konvert etmek zorundayım.
Şimdi oturdu eyvallah. ben derleyicinin yorumlamasını (yukarıda int bir değişken dedim oraya bakar falan diye) kafamdan uydurmuş bulunuyorum vesselam.
bundan sonra kod yazarken klavyeden gelecek veri her zaman string bir değer olarak düşüneceğim. ve her zaman konvert edeceğim. şeklinde düşüneceğim?
Hocam ekrana yazılan veya ekrandan alınan her giriş derleyiciye göre string dir. Çünkü bunun bir kurtarımı yok. Kullanıcı klavye üzerinde bulunan her karakteri yazabilir. Bu sebeple sen int istiyorsan bunu senin ayarlaman gerekiyor.
Hocam o zaman Variable tanımlarken yani
int Rk1, Rk2, Rk3; derken başına verdiğim "int" değişkeninin aslında çok bir önemi yok. görsel olarak hatırlama için gibi birşey mi?
aşağıda zaten ben yukarıda variable'a string de desemi double'da desem, datetime desem aşağıda bunu çevir kardeşim rakama ondalığa gibi zaten tanımlamak zorundayım?
saçmaladıysam affola. ya da bunu şimdilik unutayım. konvert ile ilgili cevaplar için teşekkür ederim.
-
Yok hocam est. Öğrenen araştırana her zaman kapı açık ;)
Şimdi şöyle birşey düşün. Yaptığın program girilen iki sayıyı birbiri ile toplasın.
Sen değişkeni başta string tanımlayıp ekrandan aldığını düşün.
string a, b;
a için kullanıcı 5 dedi, b için 10 dedi.
Sen bu sayıları toplayacaksın. Eğer değişkenin tipi string ise a+b string olarak 510 dönecek. Matematiksel olarak toplayıp 15 sonucunu alman için değişkenin tipi sayısal (int, double, decimal vs) olması gerekiyor ;) . Bu yüzden başta ne tanımlarsan ona göre tepkimeye giriyor.
-
siyahbereli bunu yazdı...
Hocam o zaman Variable tanımlarken yani
int Rk1, Rk2, Rk3; derken başına verdiğim "int" değişkeninin aslında çok bir önemi yok. görsel olarak hatırlama için gibi birşey mi?
aşağıda zaten ben yukarıda variable'a string de desemi double'da desem, datetime desem aşağıda bunu çevir kardeşim rakama ondalığa gibi zaten tanımlamak zorundayım?
saçmaladıysam affola. ya da bunu şimdilik unutayım. konvert ile ilgili cevaplar için teşekkür ederim.
Hocam olur mu boşuna "tip tanımlamanın anlamı yok",
okuyacağın veri için bellekte ne kadar yer ayıracağını program bilemez.
kafanda oturmayan şey klavyeden okunan değerin her zaman neden string olduğu,
diğer türlü değişkenlerin türünü belirtmek zorundasın.
bir örnek yapalım.
mesela T.C'yi okuyacaksın.
long tc = Convert.ToInt32(Console.ReadLine());
olarak okursan program derlenir fakat tc yi okurken ve sana hafıza taşması hatası verir.
çünkü int32 türünün hafızadaki ayrılan alanı ve int64 türünün hafızada ayrılan alanı çok farklıdır.
o yüzden değişkenin türünü bildirmek zorundasın.
aynı örnekte
long tc = Convert.ToInt64(Console.ReadLine());
yaparsan çalışır.