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ı?
Şu tek satırlık kodu açıklayabilir misiniz?
7
●182
- 31-10-2023, 19:37:37i % 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:04Hocam ç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ş.keremyagan adlı üyeden alıntı: mesajı görüntüle
Çok teşekkür ederim. - 31-10-2023, 19:39:49Evet hocam. Olay true ve false olarak açıklanabilir. 0 olunca false 1 olunca kalan true dönüyor.Themerig adlı üyeden alıntı: mesajı görüntüle
- 31-10-2023, 20:02:25Bu 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Çok iyi açıkladınız hocam, teşekkürlerwolder adlı üyeden alıntı: mesajı görüntüle