Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: Yuunus - 05 Temmuz 2017, 00:22:49

Başlık: Karsilastirma operatorleri
Gönderen: Yuunus - 05 Temmuz 2017, 00:22:49
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.
Başlık: Ynt: Karsilastirma operatorleri
Gönderen: quarko - 05 Temmuz 2017, 00:43:42
if((x>3) && (x<7))

şeklinde kullanabilirsiniz.
Başlık: Ynt: Karsilastirma operatorleri
Gönderen: Yuunus - 05 Temmuz 2017, 00:50:32
@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.
Başlık: Ynt: Karsilastirma operatorleri
Gönderen: strom - 05 Temmuz 2017, 11:11:28
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