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.