41 votes

Pourquoi et quand l'opérateur ternaire renvoie-t-il une valeur l?

Pendant longtemps j'ai pensé que l'opérateur ternaire retournait toujours une rvalue. Mais à ma grande surprise, ce n'est pas le cas. Dans le code suivant, je ne vois pas la différence entre la valeur de retour de foo et la valeur de retour de l'opérateur ternaire.

 #include <iostream>
int g = 20 ;

int foo()
{
    return g ;
}

int main()
{
    int i= 2,j =10 ;

    foo()=10 ; // not Ok 
    ((i < 3) ? i : j) = 7; //Ok
    std::cout << i <<","<<j << "," <<g << std::endl ;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X