logo

C++ ternär eller villkorlig operatör

I C++ är ternär eller villkorlig operatör (? :) är den kortaste formen för att skriva villkorliga uttalanden. Den kan användas som en inline villkorlig sats istället för if-else för att exekvera villkorlig kod.

Syntax för ternär operatör (? :)

Syntaxen för den ternära (eller villkorliga) operatorn är:



expression   ?     statement_1     :     statement_2;>

Som namnet antyder fungerar den ternära operatorn på tre operander där

  • uttryck: Tillstånd som ska utvärderas.
  • uttalande_1 : Påstående som kommer att köras om uttrycket evalueras till sant.
  • statement_2: Kod som ska köras om uttrycket evalueras till falskt.

// bild

Ovanstående uttalande från den ternära operatören är likvärdigt med if-else-satsen nedan:



  if   ( condition ) {     statement1;  }   else   {    statement2;  }>

Exempel på ternär operatör i C++

C++






// C++ program to illustrate the use of ternary operator> #include> using> namespace> std;> > int> main()> {> > >// creating a variable> >int> num, test = 40;> > >// assigning the value of num based on the value of test> >// variable> >num = test <10 ? 10 : test + 10;> > >printf>(>'Num - Test = %d'>, num - test);> > >return> 0;> }>

>

>

Produktion

Num - Test = 10>

I ovanstående kod har vi använt den ternära operatorn för att tilldela variabelns värde på ett beroende på värdet på en annan variabel som heter testa.

Notera: Den ternära operatorn har tredje lägsta prioritet, så vi måste använda uttrycken så att vi kan undvika fel på grund av felaktig hantering av operatörsprioritet.

C++ kapslad ternär operatör

En kapslad ternär operator definieras som att använda en ternär operator inuti en annan ternär operator. Liksom if-else-satser kan den ternära operatorn också kapslas inuti varandra.

Exempel på Nesting Ternary Operator i C++

I koden nedan hittar vi det största av tre siffror med den kapslade ternära operatorn.

C++




// C++ program to find the largest of the three number using> // ternary operator> #include> using> namespace> std;> > int> main()> {> > >// Initialize variable> >int> A = 39, B = 10, C = 23;> > >// Evaluate largest of three using ternary operator> >int> maxNum> >= (A>B) ? ((A> C) A: C): ((B> C) A B: C);> > >cout <<>'Largest number is '> << maxNum << endl;> > >return> 0;> }>

>

>

java jämför strängar
Produktion

Largest number is 39>

Som vi kan se är det möjligt att kapsla in ternära operatorer i varandra men koden blir komplex att läsa och förstå. Så det undviks i allmänhet att använda kapslade ternära operatorer.

Dessutom bör den ternära operatorn endast användas för kort villkorlig kod. För större kod bör de andra villkorssatserna föredras.