b() 5 döndürüyor. Neden?

int a() {
return 5;
}
int b() {
a();
}

 

su sekilde olsa tamam da;

int b() {
return a();
}

direkt a(); deyince return yapar mi emin olamadim.

nawres

b, a'yı çalıştırıyo a zaten "return 5;"

@nawres, a zaten fonksiyon, döndürür direk.

egomanyak

yazılı sınav olsa ben olsam bir şey döndürmez derdim, a 5 döndürüyor tamam da b fonksiyonu bir şey döndürmüyor.

hem hata vermesi gerekmiyor mu bu yazdıklarının ? eve gidince deneyeceğim, takibe aldım duyuruyu.

kimlanbu

@egomanyak

peki return a();

desek ne olur?

nawres

int b() {
a();
}
====
int b() {
return 5;
}
olmuyor mu ?
@nawres, şimdi bak sen de mantıklı geldin :D biri denesin harbi

egomanyak

visual studio 2010 da bu şekilde çalışmadı. b must return a value diyor.

inheritance

MinGW ile çalışıyor, o yüzden sordum zaten :)

fadetoreality

nsa compile olmamasi lazim. demek ki return yoksa en sondaki statementi donduruyor kullandiginiz compiler.

natnan

Ben de visual studio 2010 ile denedim, inheritance'ın dediği gibi "b must return a value" şeklinde hata veriyor.

kimlanbu

doğru cevap şu:

yaptığınız şey c++ standardında adı çokça geçen "undefined behaviour"dur. başınıza her şey gelebilir, compiler'ınızın yükümlülüğü değil hata vermek.

"ben denedim son statement'ı döndürüyor benim derleyicim" demek de doğru değil, sizin bilmediğiniz başka koşullar altında çok başka bir değer de döndürebilir, derleyicinizin dökümantasyonunda açık olarak ne yapılacağı belirtilmemişse.

simendiferlerin efendisi

Son statement'ı döndürmüyor zaten. Bilmediğim bir şey veya bir derleyici özelliği mi diye merak edip sordum.

Teşekkür ederim hepinize.

fadetoreality
1

mobil görünümden çık