• 15-10-2012, 17:16:43
    #10
    tamamdır şimdi demek istediğinizi anladım. ben != bunun gibi düşünmüştüm daha açık bir ifadeyle yani a = !b diye yazdığınız için net oldu. diğer türlü =! bu şekil de yaptığınızda sanki bir karşılaştırma ifadesi varmış gibi görünüyor.
    ancak bir sıkıntı daha var şimdi..

    if (expression)
       statement1
    [else
       statement2]

    Kaynak

    Alıntı
    where:

    expression
    An expression that can be implicitly converted to bool or a type that contains overloading of the true and false operators.
    statement1
    The embedded statement(s) to be executed if expression is true.
    statement2
    The embedded statement(s) to be executed if expression is false.
    burada gördüğünüz gibi expression un bool türünden bir değer(bazı değerlerin cast edilerek bool a çevrilebilip kullanılabileceği de örn: 1 ve 0 bool a cast edilebilir) olduğu söyleniyor. Yani malum olarak if in içindeki ifade bir şarttır ve true-false değerlerinden birini döndermek zorundadır.

    Şimdi arkadaşın yazmış olduğu kodda

    		if(satirsayisi_1=!sutunsayisi_2)
    ifadesi var. sizin deyiminize göre
    Alıntı
    if(a = !b)
    gibi bir ifadenin experssion olarak kullanılması için a ve b nin bool türünden birer nesne olması gerekli. Oysa burada arkadaş

    int sutunsayisi_1,sutunsayisi_2
    gibi bir integer nesne tanımlamış. Bu durumda derleyici =! ifadesini atama ifadesi değil de karşılaştırma ifadesi olarak görmüş olmak zorunda aksi halde bool türünden olmayan bir değer için derlenmemesi lazım.

    ccs c derleyicisinde if in içindeki expression da true-false a alternatif olarak 1 ve 0 kullanılabilir. Acaba buradaki de aynı mantıkla mıdır?

    Umarım sorumu anlatabilmişimdir
  • 16-10-2012, 01:42:38
    #11
    c# iki satır kod yazdığım bir dil değil. c++ a yakın bir söz dizimi var diye biliyorum. Ama C++ olmadığı kesin. C# da syntax nedir bilmem...
    Ancak c ve c++ için int türü değişkenler if içerisinde kullanılır.
    Zaten çoğu AnsiC kütüphensine ait fornksiyon int türü değer döner ve doğrudan if içerisinde kullanılabilir.
    int değişkenler if içerisinde 0 = false.. diğerleri = true olarak işlem görür.
    Aşağıda yazdığım kodların hepsinde if içerisindeki işlemler gerçekleştirilir.
    Ayrıca ben böyle kodlamam.. Her mesajımda kod okunaklılığına değiniyorum.
    Burada sadece görsel algı yanılgısı açısından yaklaştım. Derleyici görsel değerlendirmez.
    Bir nokta da yeni programlama öğrenenlerin en çok yaptığı hata if içinde == yerine = kullanmalarıdır. Çoğu durumda program o şekilde de çalışır ama işini yapmaz. Bunun sebebi yine şu yazıştığımız kullanım şekilleridir. C/C++ programcının sorumluluğunun en yüksek olduğu dillerdendir.
        char a[] = "asdf";
        char b[] = "rgt";
        int c = 0, d = 0;
        bool f = -1, g = 0;
        if(((c = strlen(a)) > (d += strlen(b))) !=! f) ;
         //    islemler..
        if(c = 3) ;
         // işlemler
        if(f =!g) ;
         //işlemler
    Yazdığınız bir noktayı unutmuşum.
    ccs c, mplabx, hi-tech, microC... vs.
    Kendi makro ve kütüphaneleri hariç hepsinde AnsiC kod kullanılır. Zaten yazılımda taşınabilirliğin anahtarı AnsiC ...
    Onlarda if neyse her c derleyicisinde aynısı..
    Mikrodenetleyici dünyasındaki C bilginizi rahatlıkla bilgisayar programlarında kullanabilirsiniz.
  • 16-10-2012, 02:22:27
    #12
    açıklamalarınız için teşekkürler, özellikle

    Alıntı
    int değişkenler if içerisinde 0 = false.. diğerleri = true olarak işlem görür.
    bu kısmı ilk kez duydum. yani aramızda bir iletişim sorunu da olabilir. if içerisindeki şartın bool türünden olması ya da 1-0 olması gerekmekte. sizin dediğinize göre pozitif değerler true yerine geçiyor ? Ama sanırım burada karşılaştırmayı kast etmişsinizdir.

    neyse konu çok karıştı sanırm anlaşmakta sıkıntı var mesela if sonrası koyduğunuz noktalı virgül gibi ya da !=! tabii bu derleyicinin esnekliği diyorsunuz ama dediğiniz gibi kod doğru çalışmaz.

    teşekkür ederim ilginiz için iyi çalışmalar
  • 16-10-2012, 10:18:50
    #14
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    sizin dediğinize göre pozitif değerler true yerine geçiyor ?
    Burada bir düzeltme gerekiyor.
    Tüm pozitif değerler değil..
    sadece 0 = false
    diğer int kümesi (negatif sayılar dahil) = true
    int sayılar boolean türe dönüştürülüyor aslında...
  • 16-10-2012, 13:18:11
    #15
    yani ben

    int X = -10;

    if(X) //doğru ise
    {
    // şartın sağlandığı işlemler
    }
    else
    {
    // şartın sağlanamadığı işlemler
    }

    bu şekilde kullanabilir miyim ?
  • 16-10-2012, 19:31:40
    #16
    Aynen öyle.. Aşağıdaki örneğinizde else içindekiler hiç bir zaman kullanılmaz. Veya X = 0 olursa kullanılır.
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    yani ben

    int X = -10;

    if(X) //doğru ise
    {
    // şartın sağlandığı işlemler
    }
    else
    {
    // şartın sağlanamadığı işlemler
    }

    bu şekilde kullanabilir miyim ?
  • 16-10-2012, 20:14:48
    #17
    anladım ve denedim dediğiniz gibi çıktı sonuç. çok ilginç geldi bana. Bir kaç yerde int in çevrilebilir olduğunu gördüm de bunla ilgili her hangi bir makale mevcut mu teknik anlamda nasıl olduğuna dair ?

    bu arada c# da böyle bir şey yok

  • 16-10-2012, 22:17:38
    #18
    Sağda solda aramanıza gerek yok.
    boolean ya da bool (_Bool) C99 standartlarıyla birlikte C diline eklenmiştir.
    Orjinal içeriklerde gerekli açıklamaları bulabilirsiniz.
    C99 yenilikleri...
    C99 Standartları...