Allgemeine Frage



  • Ich habe hier von einer Webseite einen Codschnipsel gefunden der ein Problem von mir löst!
    Nur leider versteh ich den code nicht ganz!!

    return (i==0) ? a : b;
    

    Ich habe die beiden Zeichen ? und : noch nie gesehen!

    Kann mir einer sagen welche bedeutung die beiden Zeichen haben???



  • Das ist ganz normales C 😉
    Das kannst du dir als if else konstrukt vorstellen.
    Das

    return (i==0) ? a : b;
    

    ist das selbe wie das

    if( i == 0 )
       return a;
    else
       return b;
    

    D.h. wenn der Ausdruck vor dem ? wahr ist dann wird das vor dem : ausgeführt ansonsten wird das nach dem : ausgeführt.

    Eigentlich ganz easy aber wenn man es zum ersten mal sieht dann ist es etwas verwirrend.

    schirrmie



  • Ok!
    Kool das ist natürlich eine sehr schöne Sache!



  • schirrmie schrieb:

    Eigentlich ganz easy aber wenn man es zum ersten mal sieht dann ist es etwas verwirrend.

    Ich finde ja, es ist der Tod der Lesbarkeit.



  • performance technisch machts kein unterschied denk ich



  • Tim schrieb:

    schirrmie schrieb:

    Eigentlich ganz easy aber wenn man es zum ersten mal sieht dann ist es etwas verwirrend.

    Ich finde ja, es ist der Tod der Lesbarkeit.

    Ach, daran gewöhnt man sich schon, wenn man es öfter sieht.

    BorisDieKlinge schrieb:

    performance technisch machts kein unterschied denk ich

    Im Rrinzip nicht, aber die ?: Konstruktion hat einen entscheidenden Vorteil gegenüber if-else - das Ding ist ein Ausdruck (if-else ist eine Anweisung).
    (wobei - ob man das als Vor- oder Nachteil sieht, bleibt jedem selbst überlassen)


Log in to reply