Podmínečný operátor:? :
expression ? expression : expression
Poznámky
Podmínečný operátor (? :) je ternární operátor (má tři operandy).Podmínečný operátor funguje takto:
První operand implicitně převeden na bool.Je vyhodnocena a před pokračováním jsou dokončeny všechny vedlejší účinky.
Pokud je prvním operandem vyhodnocen jako true (1), druhý operand je vyhodnocena.
Pokud je prvním operandem vyhodnocen jako false (0), třetí operand je vyhodnocena.
Výsledek Podmínečný operátor je v důsledku toho operand je vyhodnocena – druhý nebo třetí.Podmíněný výraz je vyhodnocován pouze jeden poslední dva operandy.
Podmíněné výrazy mají asociativitu zleva doprava.První operand musí být typu integrál nebo ukazatel.Na druhé a třetí výrazy platí následující pravidla:
Pokud jsou oba výrazy stejného typu, je výsledkem tohoto typu.
Pokud jsou oba výrazy aritmetický nebo výčet typů obvyklých aritmetických převody (v Aritmetické převody) jsou prováděny převést společného typu.
Pokud jsou oba výrazy typu ukazatele nebo jeden typ ukazatele a druhý je konstantní výraz, který je vyhodnocován na hodnotu 0, jsou prováděny převody ukazatel převést společného typu.
Pokud jsou oba výrazy typu odkaz, jsou prováděny převody referenčních převést společného typu.
Pokud jsou oba výrazy typu void, je společný typ typu void.
Pokud jsou oba výrazy typu dané třídy, je společný typ typu třída.
Jakékoli kombinace operandy druhé a třetí v předchozím seznamu jsou nelegální.Typ výsledku je běžným typem a je l hodnota, pokud jsou oba operandy druhé a třetí jsou stejného typu a obě hodnoty l.
Příklad
// expre_Expressions_with_the_Conditional_Operator.cpp
// compile with: /EHsc
// Demonstrate conditional operator
#include <iostream>
using namespace std;
int main() {
int i = 1, j = 2;
cout << ( i > j ? i : j ) << " is greater." << endl;
}
Viz také
Referenční dokumentace
Přednost a asociativita operátorů