? :-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.