C++-manual
Förutgående | Kapitel 6. Flödeskontroll | Nästa

# `? :`-operatorn

C++ innehåller ytterligare en konstruktion som kan användas ungefär på samma sätt som en `if`-sats. Denna är en relik från att C++ innehåller allt som C innehåller. Den allmänna formen för uttryck men `? :`-operatorn är:

    uttryck1 ? uttryck2 : uttryck3;

Detta skall tolkas som att uttryck1 först evalueras. Om denna evaluering ger värdet `true` får hela uttrycket värdet för uttryck2, i annat fall får hela uttrycket värdet för uttryck3. Ett exempel på hur man kan välja det mindre av två tal visas nedan:

    // get Tal1 och Tal2 värden
    int Tal1 = ...;
    int Tal2 = ...;
    int MindreTalet = Tal1 < Tal2 ? Tal1 : Tal2;

Här får `MindreTalet` värdet på `Tal1` om `Tal1 < Tal2`, i annat fall får `MindreTalet` värdet på `Tal2`. Detta kan verka lite kryptiskt, och det är det också. Man bör vara försiktigt med att använda `? :`-operatorn, eftersom det är enkelt att göra fel. I vissa fall är den dock helt praktisk, speciellt när en normal `if`-sats skulle bli för lång och "skymma" den relevanta koden.

    // get Tal1 och Tal2 värden
    int Tal1 = ...;
    int Tal2 = ...;
    cout << "Tal1 är " (Tal1 < Tal2 ? "mindre" : "större")
         << " än Tal2." << endl;

Här används `? :`-operatorn för att välja mellan texten `"mindre"` och `"större"`, beroende på värdet på uttrycket `Tal1 < Tal2`. Parenteser har använts för att gruppera koden snyggare och göra den mera läslig.

Förutgående | Hem | Nästa
`switch`-uttryck | Upp | Funktioner