Долгое время я думал, что троичный оператор всегда возвращает значение. Но, к моему удивлению, это не так. В следующем коде я не вижу разницы между возвращаемым значением foo
и возвращаемым значением троичного оператора.
#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 ;
}