Karsilastirma operatorleri

Başlatan Yuunus, 05 Temmuz 2017, 00:22:49

Yuunus

Merhaba; Delphi pascal vs. de bir degiskenin istedigimiz aralikta olup olmadigini
if(3<x>7) then
gibi bir syntax ile basitce kontrol edebiliyorduk ama C de ayni islemi yapmak icin en az iki satirda bu islemi yaptirabiliyorum, yukaridaki gibi bir kullanim C de de mevcut mudur; degil ise nasil tanimlayabilirim? Tesekkurler.

quarko

if((x>3) && (x<7))


şeklinde kullanabilirsiniz.
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

Yuunus

#2
@quarko  zaten bu sekilde kullaniyorum, yukaridaki gibi aralik belirleyebilecegim bir syntax var mi onu sormustum.Bu sekilde zaten iki kez sart kontrolu yapiliyor.Belki delphi de arka planda bu sekilde kontrol ediyor ama kullanim acisindan inanilmaz rahat.Bu sekilde bir tanimi nasil yazabilirim.

strom

#3
Hocam operatörlerin davranma biçiminden dolayı böyle bir ifadeyi yazabileceğinizi düşünmüyorum. En azından benim aklıma bir yöntem gelmedi.
(a<x>b) şeklinde bir ifade C++'da şu şekilde yorumlanıyor; öncelikle (a < x) işlemi yapılıyor. bu işlem sonucunda eğer a, x'ten küçük ise "1" değil ise "0" değeri döndürülüyor. Yani sonuç olarak (1 > b) veya (0 > b) şeklinde bir ifadeye dönüşüyor.
Sizin isteğinizin olabilmesi için (a < x) gibi bir işlemin sonucunda x'in kendisinin geri döndürülmesi lazım ki bu işlemden sonra (x > b) işlemi yapılabilsin. C++'ta operator overloading ile bu yapılabilsede yinede ekstra bir operator daha kullanmadan istediğiniz sonucu alabilmeniz pek mümkün görülmüyor.

Düzeltme: Operator overloading ile de yapılamazmış. C++'da built-in işlemler overload edemiyormuşuz. Yani;

bool operator<(int x, int y)
{}

şeklinde bir overload işlemi derleyici tarafından kabul edilmiyor.
Kaynak: https://stackoverflow.com/questions/17941531/can-we-overload-operators-for-built-in-types-like-int-or-float