• 31-10-2023, 19:29:44
    #1
    int i = 0;
    int j = 6;

    char ch = (i % 2) & (j % 2) ? 'a' : 'b';
    printf("%c", ch);

    Bu kodda i=0 ise j harfi ister 1 olsun ister 5 olsun isterse 100 olsun yani kaç olursa olsun ekrana hep b harfini basıyor.?
    Neden? Konu hakkında fikriniz var mı?
  • 31-10-2023, 19:36:29
    #2
    bölümler den kalanlar 0 olduğu için false dönecektir. ve b harfi basacaktır. düzeltme ikinci değer değiştiğinde kalan 0 olmadığında b vermemesi lazım değil mi ? ama ilk değer false döndüğü için 2. değere bakmadan b çıkıyor.
  • 31-10-2023, 19:37:37
    #3
    Python Coder
    i % 2 = i'nin 2'ye bölümünden kalan
    & -> ve anlamına gelir

    i 0 olduğu için 2ye bölümünden kalan 0 olur. Ve koşulunda eğer bir taraf 0(False) ise diğer koşula bakılmaksızın sonuç 0 olur. Dolayısıyla "b" harfi seçilir.

    i yerine 1 yazarsanız 2'ye bölümünden 1 kaldığı için bu sefer diğer koşula bakılır. Eğer diğer koşul da 1 sonucunu verirse "a" yazdırılır, aksi halde "b" yazdırılır
  • 31-10-2023, 19:39:04
    #4
    keremyagan adlı üyeden alıntı: mesajı görüntüle
    i % 2 = i'nin 2'ye bölümünden kalan
    & -> ve anlamına gelir

    i 0 olduğu için 2ye bölümünden kalan 0 olur. Ve koşulunda eğer bir taraf 0(False) ise diğer koşula bakılmaksızın sonuç 0 olur. Dolayısıyla "b" harfi seçilir.

    i yerine 1 yazarsanız 2'ye bölümünden 1 kaldığı için bu sefer diğer koşula bakılır. Eğer diğer koşul da 1 sonucunu verirse "a" yazdırılır, aksi halde "b" yazdırılır
    Hocam çok güzel açıklamışsınız. Ben olaya kalan gözüyle bakıyordum, meğer öyle değilde true ve false olarak bakmak gerekiyormuş.
    Çok teşekkür ederim.
  • 31-10-2023, 19:39:43
    #5
    Python Coder
    Hygge adlı üyeden alıntı: mesajı görüntüle
    Hocam çok güzel açıklamışsınız. Ben olaya kalan gözüyle bakıyordum, meğer öyle değilde true ve false olarak bakmak gerekiyormuş.
    Çok teşekkür ederim.
    Rica ederim ne demek
  • 31-10-2023, 19:39:49
    #6
    Themerig adlı üyeden alıntı: mesajı görüntüle
    bölümler den kalanlar 0 olduğu için false dönecektir. ve b harfi basacaktır. düzeltme ikinci değer değiştiğinde kalan 0 olmadığında b vermemesi lazım değil mi ?
    Evet hocam. Olay true ve false olarak açıklanabilir. 0 olunca false 1 olunca kalan true dönüyor.
  • 31-10-2023, 20:02:25
    #7
    Bu kod parçasında, ch değişkeninin değeri i % 2 ve j % 2 ifadelerinin mantıksal ve işlemine dayanıyor.
    Eğer bu iki ifade de true ise (1), o zaman ch değişkenine 'a' atanıyor, aksi takdirde 'b' atanıyor.
    i % 2 ifadesi, i'nin 2'ye bölümünden kalanı verir. 0'ın 2'ye bölümünden kalan 0'dır (0 % 2 = 0). j % 2 ifadesi ise, 6'nın 2'ye bölümünden kalan 0'dır (6 % 2 = 0).
    Yani her iki ifade de 0'a eşittir, yani her ikisi de false durumdadır.
    Bu nedenle, false ve false mantıksal değerlerin mantıksal ve işlemi sonucu false olduğu için ch değişkeni 'b' ile atanır.
    Bu yüzden ne olursa olsun, kod her zaman 'b' harfini ekrana bastırır.
  • 31-10-2023, 21:34:57
    #8
    wolder adlı üyeden alıntı: mesajı görüntüle
    Bu kod parçasında, ch değişkeninin değeri i % 2 ve j % 2 ifadelerinin mantıksal ve işlemine dayanıyor.
    Eğer bu iki ifade de true ise (1), o zaman ch değişkenine 'a' atanıyor, aksi takdirde 'b' atanıyor.
    i % 2 ifadesi, i'nin 2'ye bölümünden kalanı verir. 0'ın 2'ye bölümünden kalan 0'dır (0 % 2 = 0). j % 2 ifadesi ise, 6'nın 2'ye bölümünden kalan 0'dır (6 % 2 = 0).
    Yani her iki ifade de 0'a eşittir, yani her ikisi de false durumdadır.
    Bu nedenle, false ve false mantıksal değerlerin mantıksal ve işlemi sonucu false olduğu için ch değişkeni 'b' ile atanır.
    Bu yüzden ne olursa olsun, kod her zaman 'b' harfini ekrana bastırır.
    Çok iyi açıkladınız hocam, teşekkürler