wert>=0 ? wert : -wert -> Was bedeutet das?



  • Guten Tag.

    ich habe in einem Code eine solche Funktion gesehen:

    int sign(double wert)
    {
      return wert>=0 ? wert : -wert;
    }
    

    Da ich diese Syntax nicht kenne, möchte ich gerne mehr dazu wissen. Aber ich habe keine Ahnung, wie man solche Ausdrücke nennt (das mit den Fragezeichen und Doppelpunkt) und kann daher auch nicht danach im Netz suchen. Kann mir bitte jemand einen Tip geben?



  • hi,
    ich glaub der operator heisst einfach 'conditional-operator'
    ist das gleiche wie:

    int sign(double wert)
    {
      if (wert>=0)
        return wert;
      else
        return -wert;
    }
    


  • return wert>=0 ? wert : -wert;
    

    ist äquivalent zu:

    if(wert>=0)
      return wert;
    else
      return -wert;
    

    warum die Funktion allerdings "sign" heißt ist mir schleierhaft ...
    "abs" oder so was wäre finde ich passender 😉

    außerdem ist wert vom Typ "double" (Fließkommazahl) und der Rückgabewert der Funktion "int" (Ganzzahl), das führt zu Problemen ...

    kann es sein, dass die Funktion so aussehen müsste:

    int sign(double wert) {
      if(wert>=0)
        return 1;
      else
        return -1;
    }
    

    das wäre dann ne klassische Signumfunktion



  • Checker&Murckser schrieb:

    das wäre dann ne klassische Signumfunktion

    jo. wie du das schreibst schein mit das sehr logisch. dann ist der code, den ich hier vor mir liegen habe, wahrscheinlich fehlerhaft.

    thx.


Anmelden zum Antworten