"10 + 20" İfadesi Hangi Veri Tipine Ait Bir İfadedir?

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 :

D df

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.

1 Beğeni

Evet,haklısınız.C++ 11 ile gelen veri tipini otomatik algılama özellğini kullanmadım :man_facepalming:Tam özür dilemek için bunu yazacakken yorumunuzu gördüm,çok teşekkür ederim :heart:

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.

1 Beğeni

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.

1 Beğeni