Merhabalar,
Başlıkta da yazdığım gibi,“10 + 20” ifadesi hangi veri tipine ait bir ifadedir?
Çıktıyı değil,girdiyi soruyorum.
Merhabalar,
Başlıkta da yazdığım gibi,“10 + 20” ifadesi hangi veri tipine ait bir ifadedir?
Çıktıyı değil,girdiyi soruyorum.
10 + 20
bir nesne değil.
"10 + 20"
diyorsanız str
.
#include <iostream>
#include <clocale>
#include <string>
using namespace std;
int main() {
setlocale(LC_ALL, "Turkish");
int no;
cout << "\t\t\t\t\t ..... Converter .....\n";
cin >> no;
cout << no;
}
Yazdığım programın çıktıları şöyle :
Neden böyle çıktılar verdi?
Ben Python hakkında konuşuyoruz sanmıştım, C++'nin kütüphaneleri hakkında bilgim yok. Ama dökümanlarına başvurursanız sorunuzun cevabını bulursunuz diye tahmin ediyorum.
Veri tipleri dilden dile farklılık gösterir mi?
özetle, std::cin
sizin girdiğiniz input’u atanılacak değişkenin (no
) veri tipine (int
) çevirmeye çalışıyor çevirebildiği kadar, çeviremediğinde 0 döndürüyor (veya eskiden neyse o kalıyor, versiyona bağlı).
İlk örneğinizde 10 + 20
’nin soldan başlanarak 10
olan kısmı int’e çevrilip ilgili değişkene aktarılıyor.
İkinci örneğinizde ise "10 + 20"
'nin başındaki (en soldaki) "
karakteri yüzünden herhangi bir çevrilme işlemi gerçekleşemiyor; versiyonunuz c++11+ olsa gerek ki 0 atanıyor.
Bu input’ların henüz veri tipleri yok, çünkü programa aktarılmadılar daha siz yazarken. Ne zaman ki enter’a basıyorsunuz, bunlar “karakterler” olarak görülüp programa “akıyorlar” (streaming) ve istenen veri tipine (sizdeki int) çevrilmeye çalışıyorlar.
Evet,haklısınız.C++ 11 ile gelen veri tipini otomatik algılama özellğini kullanmadım Tam özür dilemek için bunu yazacakken yorumunuzu gördüm,çok teşekkür ederim
auto
'yu mu kast ediyorsunuz, eğer öyleyse onu std::cin
ile kullanamayız çünkü auto
compile-time’da belirlenen tip ile atama yapıyor dolayısıyla kullanıcıdan gelmesi beklenen, yani run-time’da ancak belirli olan bir değeri auto
ile karşılayamayız. Belki input’u string ile karşılayıp sonrasında sayı mı değil mi gibi kontroller yapabilirsiniz.
Hangi dilde?
Ciktiyi degil, girdiyi sormak ne demek?
Cunku C++ boyle tasarlandi.
(Yukarida @anon18277073 nasil sorusunun cevabini vermis)
Veri tipi dile ait bir sey zaten, birden fazla dilde olan bir veri tipi olmadigi icin benzerlik veya farklilik gostermesi cok zor.
Olasi bir yanlis anlamayi daha onlemesi acisindan ekliyorum:
Bunu yapan tam olarak std::cin::operator>>(int)
. Bunu yaziyorum, cunku:
Input’un otomatik algilanmasi gibi bir sey sozkonusu degil. Programi calistirmadan biliyoruz no
’nun int
oldugunu ve operator>>(int)
'in girdiyi int
’e cevirmeye calisacagini.
auto
herhangi bir algilama yapmiyor, zaten bilinen seyin iki kere yazilmasini onluyor.