Giriş Yap Kayıt ol Online Üyeler Aktif Konular Arama Üyeler Forum Kuralları
Tahribat.Com | C++ Ile Ilgili Ufak Bir Soru.
Tahribat.Com Forumları
C - C++
      C++ Ile Ilgili Ufak Bir Soru.
Bu Bölümde yeni konu açmak için tıklayın Konuyu cevaplamak için tık...
Konu 30 Kasim 2011 (Çarsamba) 16:41 tarihinde açıldı. Kısayol | Alıntı yap | Özel Mesaj
Andrei


Kayıt : 11 Aralik 2008
h4ckc1ty
Erkek Üye
 

int x=6; 

x=x-((x-(--x)-(++x)));

cout << x << endl;

 
bu kodu tek tek acıklayabilecek birisi var mıdır ?
 
artırma - azaltma operatörleriyle biraz fantezi yapalım dedik ama bildiklerimizi de karıstırdık.
 
önden artırmalı ve azaltmalı iki deger yanyana gelince nasıl isleme giriyor bunlar ?
 
 
mesela :
 
int x=6; 
 
x=(--x)-(++x);
 
cout << x << endl;
 
bunun sonucu neden 0 ?
 
 
ilk soruyu birisi detaylıca anlatırsa bundan sonra sorun cıkacagını sanmıyorum ^^

#creme de la creme. 
30 Kasim 2011 (Çarsamba) 17:32 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
DrKill


Kayıt : 10 Mart 2004
Ankara
Erkek Üye
 

Dur bi sn bakayım.

 

 

Not:Neden öyle anlamadım. Üstekkini açıklasam alttakini açıklayamıyorum. Operatör önceliklerinede baktım anlamadım.


Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir 
30 Kasim 2011 (Çarsamba) 17:35 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
Andrei


Kayıt : 11 Aralik 2008
h4ckc1ty
Erkek Üye
 

cevap 12 abi.

alttakinin cevabı da 0.

 

acaba söyle mi :

operatör önde olursa önce soldakini hesaplayıp isleme dagıtıyoruz, yani x-(--x) bu ifade 5 -5 = 0 oluyor.

++x'teki x'in ifadesi de 5 oldugunu düsünürsek, ++'dan degeri 1 artırıldı, yani 0 - 6 = -6 oldu.

oradaki ++'dan dolayı parantez dısındaki x'de 6 olduysa;

6 - (-6) = 12.

 

dogru mu ki dedigim :/


#creme de la creme. 
30 Kasim 2011 (Çarsamba) 17:37 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
renegadealien


Kayıt : 23 Mart 2003
Ankara
Erkek Üye
 

x=x-((x-(--x)-(++x)));

(--x)-(++x)

5-7 = -2

6--2 = 8

6-8 = -2 olması lazım matematiksel olarak diye düşünüyorum, ama bu kadar iç içe döngüde karıştırıyor olabilirim

(x-(--x)-(++x)) bunda değer nedir geri dönen?


Eski bir magirus atasözü der ki; Basamakta durmayın, otomatik kapı çarpar... 
30 Kasim 2011 (Çarsamba) 17:39 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
Bosluk


Kayıt : 11 Kasim 2007
Erkek Üye
 

renegadealien bunu yazdı:
-----------------------------

x=x-((x-(--x)-(++x)));

(--x)-(++x)

5-7 = -2

6--2 = 8

6-8 = -2 olması lazım matematiksel olarak diye düşünüyorum, ama bu kadar iç içe döngüde karıştırıyor olabilirim

(x-(--x)-(++x)) bunda değer nedir geri dönen?


-----------------------------

cevap 12

 

burasıda böyle gelmıo

(--x)-(++x)

5-7 = -2

 

bu =0 oluo

 

Buna Şeyh'in bakması lazım :))

 


... 469 karakter hakkınız kaldı 
30 Kasim 2011 (Çarsamba) 17:39 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
Andrei


Kayıt : 11 Aralik 2008
h4ckc1ty
Erkek Üye
 

renegadealien bunu yazdı:
-----------------------------

x=x-((x-(--x)-(++x)));

(--x)-(++x)

5-7 = -2

6--2 = 8

6-8 = -2 olması lazım matematiksel olarak diye düşünüyorum, ama bu kadar iç içe döngüde karıştırıyor olabilirim

(x-(--x)-(++x)) bunda değer nedir geri dönen?


-----------------------------

-6 abi.

o zaman benim dedigim gibi cıkıyor olay ?


#creme de la creme. 
30 Kasim 2011 (Çarsamba) 18:21 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
sandman


Kayıt : 1 Eylül 2005
Erkek Üye
 

++x ila x++ operatorleri arasında şöyle bir fark vardır eğer işlem(+,-) önce olursa sayının değerini bir sonraki satırda artırır yani o esnada işleme sokmaz.

Şimdi senin yazdıgın koda ++'ların yada --'lerin olması aslında bir etkide bulunmuyor çünkü x-(--x)-(++x) satırında ilk x ile --x birbirini sıfırlıyor ve ++x'in başında eksi oldugu için otomatik olarak elimizde -x kalıyor aynı satırda işleme devam ettigimiz için hala x'lerin değeri modifiye edilmedigine dikkat çekerim. daha sonra parantezlerin başında - oldugu için klasik matematikten iki -'i + oluyor oluyor ve asıl işlem x+x'e dönüyor


Mühendis kahveyi projeye dönüştüren bir insan evladıdır. 
30 Kasim 2011 (Çarsamba) 20:00 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
Quarantine


Kayıt : 7 Aralik 2007
Erkek Üye
 

sandman bunu yazdı:
-----------------------------

++x ila x++ operatorleri arasında şöyle bir fark vardır eğer işlem(+,-) önce olursa sayının değerini bir sonraki satırda artırır yani o esnada işleme sokmaz.

Şimdi senin yazdıgın koda ++'ların yada --'lerin olması aslında bir etkide bulunmuyor çünkü x-(--x)-(++x) satırında ilk x ile --x birbirini sıfırlıyor ve ++x'in başında eksi oldugu için otomatik olarak elimizde -x kalıyor aynı satırda işleme devam ettigimiz için hala x'lerin değeri modifiye edilmedigine dikkat çekerim. daha sonra parantezlerin başında - oldugu için klasik matematikten iki -'i + oluyor oluyor ve asıl işlem x+x'e dönüyor


-----------------------------
Öncelikle durum sizin belirttiğinizin tam tersi hocam. Önce ikili operatör varsa önce bu operatörlerin belirttiği işlem yapılır.

x=(--x)-(++x);

işlemini adım adım hangi işlemlerin yapıldığını anlatarak açıklamaya çalışayım:

1: --x  işlemi yapılarak x'in değeri 5'e indirilir.

2: ardından x++ işlemi ile x tekrar 6'ya yükseltilir.

3: son olarak x'in son değeri yani 6 için x-x yani 6-6 işlemi yapılır ve sonuç sıfır olarak bulunur, x'e atanır.

Not: 1. ve 2. adımın sırası derleyicinin bu işlemi nasıl ele aldığına göre değişebilir ama sonuç değişmez.

 

Buradan ilk sorunun çözümünü çıkarabilirsiniz diye açıklamaya gerek görmedim ama talep olursa onu da anlatabilirim:)

Hadi kolay gele.


........................... 
30 Kasim 2011 (Çarsamba) 20:05 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
sandman


Kayıt : 1 Eylül 2005
Erkek Üye
 

@Quarantine 

Doğru diyorsun kafam bildiğin kafan ben karıştırmışım


Mühendis kahveyi projeye dönüştüren bir insan evladıdır. 
30 Kasim 2011 (Çarsamba) 20:31 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
Andrei


Kayıt : 11 Aralik 2008
h4ckc1ty
Erkek Üye
 

Quarantine bunu yazdı:
-----------------------------

sandman bunu yazdı:
-----------------------------

++x ila x++ operatorleri arasında şöyle bir fark vardır eğer işlem(+,-) önce olursa sayının değerini bir sonraki satırda artırır yani o esnada işleme sokmaz.

Şimdi senin yazdıgın koda ++'ların yada --'lerin olması aslında bir etkide bulunmuyor çünkü x-(--x)-(++x) satırında ilk x ile --x birbirini sıfırlıyor ve ++x'in başında eksi oldugu için otomatik olarak elimizde -x kalıyor aynı satırda işleme devam ettigimiz için hala x'lerin değeri modifiye edilmedigine dikkat çekerim. daha sonra parantezlerin başında - oldugu için klasik matematikten iki -'i + oluyor oluyor ve asıl işlem x+x'e dönüyor


-----------------------------
Öncelikle durum sizin belirttiğinizin tam tersi hocam. Önce ikili operatör varsa önce bu operatörlerin belirttiği işlem yapılır.

x=(--x)-(++x);

işlemini adım adım hangi işlemlerin yapıldığını anlatarak açıklamaya çalışayım:

1: --x  işlemi yapılarak x'in değeri 5'e indirilir.

2: ardından x++ işlemi ile x tekrar 6'ya yükseltilir.

3: son olarak x'in son değeri yani 6 için x-x yani 6-6 işlemi yapılır ve sonuç sıfır olarak bulunur, x'e atanır.

Not: 1. ve 2. adımın sırası derleyicinin bu işlemi nasıl ele aldığına göre değişebilir ama sonuç değişmez.

 

Buradan ilk sorunun çözümünü çıkarabilirsiniz diye açıklamaya gerek görmedim ama talep olursa onu da anlatabilirim:)

Hadi kolay gele.


-----------------------------

tesekkür ederim.

sandman'in anlattıgını anladım da ilk soru icin, benim dedigim de dogru degil mi ?

x=x-((x-(--x)-(++x)));

x-(--x) burada --x önce 5 oluyor ve solundaki x'i de 5'e esitliyor. 5 - 5 = 0 oluyor.

++x'teki x'de 5'e düsüyor ama önünde ++ oldugundan tekrar 6 oluyor. tabii bu sırada aynı artma - azaltma islemleri parantez dısındaki x icin de gecerli oluyor.

0 - (++x) = 0 - 6 = -6.

parantez dısındaki x'te 6, 6 - (-6) = 12.

ben böyle cözdüm, sizin anlattıgınız yöntem de benim dedigimi dogruluyor sanırım.


#creme de la creme. 
30 Kasim 2011 (Çarsamba) 20:42 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
Quarantine


Kayıt : 7 Aralik 2007
Erkek Üye
 

Andrei bunu yazdı:
-----------------------------

Quarantine bunu yazdı:
-----------------------------

sandman bunu yazdı:
-----------------------------

++x ila x++ operatorleri arasında şöyle bir fark vardır eğer işlem(+,-) önce olursa sayının değerini bir sonraki satırda artırır yani o esnada işleme sokmaz.

Şimdi senin yazdıgın koda ++'ların yada --'lerin olması aslında bir etkide bulunmuyor çünkü x-(--x)-(++x) satırında ilk x ile --x birbirini sıfırlıyor ve ++x'in başında eksi oldugu için otomatik olarak elimizde -x kalıyor aynı satırda işleme devam ettigimiz için hala x'lerin değeri modifiye edilmedigine dikkat çekerim. daha sonra parantezlerin başında - oldugu için klasik matematikten iki -'i + oluyor oluyor ve asıl işlem x+x'e dönüyor


-----------------------------
Öncelikle durum sizin belirttiğinizin tam tersi hocam. Önce ikili operatör varsa önce bu operatörlerin belirttiği işlem yapılır.

x=(--x)-(++x);

işlemini adım adım hangi işlemlerin yapıldığını anlatarak açıklamaya çalışayım:

1: --x  işlemi yapılarak x'in değeri 5'e indirilir.

2: ardından x++ işlemi ile x tekrar 6'ya yükseltilir.

3: son olarak x'in son değeri yani 6 için x-x yani 6-6 işlemi yapılır ve sonuç sıfır olarak bulunur, x'e atanır.

Not: 1. ve 2. adımın sırası derleyicinin bu işlemi nasıl ele aldığına göre değişebilir ama sonuç değişmez.

 

Buradan ilk sorunun çözümünü çıkarabilirsiniz diye açıklamaya gerek görmedim ama talep olursa onu da anlatabilirim:)

Hadi kolay gele.


-----------------------------

tesekkür ederim.

sandman'in anlattıgını anladım da ilk soru icin, benim dedigim de dogru degil mi ?

x=x-((x-(--x)-(++x)));

x-(--x) burada --x önce 5 oluyor ve solundaki x'i de 5'e esitliyor. 5 - 5 = 0 oluyor.

++x'teki x'de 5'e düsüyor ama önünde ++ oldugundan tekrar 6 oluyor. tabii bu sırada aynı artma - azaltma islemleri parantez dısındaki x icin de gecerli oluyor.

0 - (++x) = 0 - 6 = -6.

parantez dısındaki x'te 6, 6 - (-6) = 12.

ben böyle cözdüm, sizin anlattıgınız yöntem de benim dedigimi dogruluyor sanırım.


-----------------------------

Rica ederim hocam, önemli değil.

Yalnız sanırım biraz daha açmam gerekiyor konuyu.

x-(--x)-(++x)  işlemini ele alırsak:

bu satırda --x ve ++x  işlemleri birbirlerine göre eşit öncelikte,  x-(...)-(...) işlemi ise daha düşük bir önceliğe sahip.

Bu yüzden burada öncelikle x'ten bir çıkarılıp bir artırılır ve x'in değeri tekrar 6 olur.

Son olarak  6-(6)-(6)  işlemini yapıyor olacağız ki burada sonuç -6 çıkmış olacak.

Bu kadarını anladıktan sonra zaten:

x=x-((x-(--x)-(++x)));  işleminin  x=6-(-6); yani x=12  ile sonuçlanacağını görebiliriz.


Sonucu doğru bulmuşsun ama işlem önceliğinde biraz sorun var gibi:)



........................... 

[1] [2]   [»] [»»]


Bu Bölümde yeni konu açmak için dıklayın Konuyu cevaplamak için tık...
Allah'a Havale Et Google Bookmark'a Ekle Yahoo'ya Ekle Stumbleupon'a Ekle Facebook'a Ekle Twitter'a Ekle   Google'da Ara : C++ ile ilgili ufak bir soru. Favorilerime Ekle Yukarı Çık
Konuda 17 Mesaj Var.
Konu 451 Sefer Gösterilmiş.
2001-2012 © Tahribat Group - Her Hakkı Saklıdır. - ● Gizlilik İlkeleri ● Kullanım Koşulları ● İletişim