Que hace ? y: significa en C ++?

Por ejemplo tengo esta statement

return ( m > n ? m : n ); 

¿Qué significa el signo de interrogación entre m > n y m : n ?
¿Qué significa el colon en m : n ?

Su nombre técnico es el operador condicional, y es una abreviatura de if-then;else .

 if m > n then m else n 

o en la syntax real de C ++:

 if(m > n) { return m; } else { return n; } 

¿Qué significa el signo de interrogación entre m> n y m: n? ¿Qué significa el colon en m: n?

El ? y : son parte de la syntax de los operadores condicionales. El ? indica que la expresión de la izquierda debe ser una evaluación booleana true o false . El : delinea los resultados true y false . La mano izquierda de : es el resultado si la expresión se evalúa como true y la mano derecha de : es el resultado si la expresión es false

Este es el operador ternario, significa que si m es mayor que n, entonces m, en caso contrario, es equivalente a:

  if(m>n) return m; else return n;