• 27-01-2025, 21:10:21
    #1
    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
  • 27-01-2025, 21:13:32
    #2
    Bu 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.
    Sonuç olarak, toplam değişkenine 2 atanır.
  • 27-01-2025, 21:14:18
    #3
    k'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:52
    #4
    RuzgarTasarim adlı üyeden alıntı: mesajı görüntüle
    Bu 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.
    Sonuç olarak, toplam değişkenine 2 atanır.
    Anladım hocam çok teşekkürler.
  • 27-01-2025, 21:18:26
    #5
    k % 2 => k'nın ikiye bölümünden kalanı döner yani k 2nin katıysa 0 bölünemiyorsa 1 döner. İf koşulunda da 0 false, 1 true anlamına gelir, bu neden k 2ye bölünebiliyorsa : işaretinin sağ tarafı bölünemiyorsa sol tarafı çalışır
  • 27-01-2025, 21:24:30
    #6
    Hocam 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