Merhaba arkadaşlar Bu if yapısı nedir acaba?
i,j=1
k=1
toplam = (k % 2 ? i + j : i - j);
printf("%d",toplam);
Arkadaşlar bu kod normalde k'nın 2'ye bölünebiliyorsa true bölünemiyorsa false olmaz mı?
eğer böyleyse i-j=0 vermesi gerek miyor mu? Ancak sonuç i+j=2 çıkıyor
Sizce neden? Kafam bulanık bişeyi göremiyorum galiba
Bu if yapısı nedir
5
●196
- 27-01-2025, 21:13:32Bu satırda C dilinde "ternary operator" kullanılmış. % operatörü, k % 2 ifadesi ile k'nın 2'ye bölümünden kalanı alır. Yani:
- k % 2 ifadesi 1 olduğu için k % 2 1'e eşit olur. Bu durumda ? operatörü doğru (true) bir durumu ifade eder.
- Eğer koşul doğruysa, i + j yani 1 + 1 yapılır, bu da 2 eder.
- Eğer koşul yanlış olsaydı (örneğin k çift olsaydı), i - j yapılırdı, bu da 0 ederdi.
- 27-01-2025, 21:14:18k'nin 2 ye bölümünden kalan 1 olduğu için true döner. k % 2 == 0 yazarak kontrol ettirmeniz gerekiyor.
- 27-01-2025, 21:15:52RuzgarTasarim adlı üyeden alıntı: mesajı görüntüle
- 27-01-2025, 21:24:30Hocam bu kodlamayi sana anlatayim bak
bu kod, k sayısının tek mi çift mi olduğuna bakıp, tek ise iki sayıyı topluyor, çift ise birbirinden çıkarıyor.
i = 1
j = 1
k = 1
simdi toplam = (k % 2 ? i + j : i - j);
burda diyorki
k%2 eger k/2 bolunce kalan birse 1 nedemek pythonda true
true ise o halde i + j su islemi yap
k%2 eger k/2 bolunce kalan sifirsa 0 nedemek pythonda false
false ise o halde i - j su islemi yap
Bu ornekte 1%2 yaptigin zaman 1/2 boldugumuzde kalan 1dir.
Cunku 1 icinde 2 zaten hic yok 1 tane artiyorya 1 kalan
Kalan 1 oldugu icin 1 true oldugu icin
i + j gerceklesir 1+1 = 2