Güzel C++ Bir Sorusu ????
-
Aslında programın çok mantıklı bir çalışması var güzel bir soru ben programı şöyle yorumlayacağım
#define EKLE(x) x + x
main(){
int x = 3;
int y = EKLE(++x);/*x değeri artmadan makroya giriyor yani orjinal değeri olan 3 ile makro fonksiyon x i kendisiyle toplıyor buda 6 makro çağırıldığı yere geri dönüiyor ve x bir artırılıyor x=4 oldu makro dan gelen değerle 6 ile 4 toplanıyor =10*/}
-
Beyler cevabınızı yada yorumunuzu yazin yeterlidir. herkez sizinle ayni sekil düsünmek zorunda degil.
ayrica charmander gercekten oyle bişey dedi mi bilmiorum, ama dediyse bana inanmasi cok zor olabilecek bir sey gibi gelmiyor cunku benzeri seyleri kendim yasadim o yaslarda. 18-19 yaslarinda bir insan gercekten (nadiren de olsa) programlama uzmanı olabilir. uydu projelerinden kastınız tam nedir bilmiyorum ama bir proje, iyi bir yonetici ile takim calismasi ile böldügünde projeyi tamamlamak icin nobel odulu almis insanlarla calismaya gerek yoktur, yoneticiler iyiyse ortalama programcılarla bircok buyuk projeyi goturebilirsiniz. ayrica charmander bildiim kadariyla konusunda gayet iidir.
Zaten bana göre bu soru birinin sadece c++ da birkac spesifik seyi bilip bilmediini gosterir, c++ i ne kadar iyi kullandigini gostermez. yinede güzel bir soru
-
#define EKLE(x) x + x
main(){
int x = 3;
int y = EKLE(++x);
}bu kodun karşılığı bildiğiniz üzere şudur: y=(++x)+(++x);
burda olan olay işlemciden işlemciye ve kullandıgınız compiler'dan compiler'a göre değişir.
kendi makinamda(p4 3.06Ghz+3.00Ghz;VStudio 6.0+SP5) yaptıgım denemelerde; işlemin sağ tarafının soldan sağa dogru yapıldıgını gördüm.
ilk önce x'in degerini 1 artırıyor, kod şu hali alıyor: y=x+(++x); x'in degeri 4 oluyor.
sonra sağa kayıp x'i tekrar 1 artırıyor bu kez kod şöyle oluyor: y=x+x; x'in degeri 5 oluyor.
En son basamakta bildigimiz toplama işlemini yapıyor, sağdaki x'i soldaki x'e ekliyor. sonuç 10 oluyor.
Bir adım ileri gidersek yani şöyle bişe verilirse:
x'in ilk degeri 3 olsun yine ve y=(++x)+(++x)+(--x);
işlem sırasıyla :
x 4 olur ve kod: y=x+(++x)+(--x);
x 5 olur ve kod: y=x+x+(--x); bu basamakta ortadaki x ile bastaki x toplanıyor.
kod şu hali alıyor: y=10+(--x);
x 1 azalıp 4 oluyor ve kod: y=10+x;
en son basamakta sondaki x 10'un üzerine ekleniyor ve y 14 oluyor x de 4 oluyor.
kafanızdaki soru işaretleri gittiyse ne mutlu bana..