Duda línea de código: k=(j<2)?i:j;

Buenas,

me encuentro estudiando un poco de programación y me he encontrado con el siguiente trozo de código en un examen:

int i=0, j=6, k;

void setup()
{
  i+=j-1;
  k=(j<2)?i:j;  
}

En las respuestas indican que k=6; pero no logró entender por qué. He buscado en la ayuda de la página de Arduino pero no he logrado encontrar ninguna estructura como esta.

Muchas gracias por la ayuda y un saludo.

El operador ? funciona así

Cuando (j<2) es VERDADERO se ejecuta lo que esta luego del ?
Cuando (j<2) es FALSO se ejecuta lo que esta luego del :

Qué trabalenguas es el ejercicio!!

i = 0 j = 6

j-1 = 5 =>

i=j-1; => i = 5 pero como dice que se suma i+ es lo mismo que i = i+1 => la respuesta es i = 6

Ahora bien....

k = (6<2)?i:j;

6<2 es FALSO entonces me quedo con el valor de j que también es 6

Por cualquier camino la respuesta es 6 pero te di la razón que lo justifica.
Tal vez alguien lo explique mejor que yo.

Lo único que voy a agregar, a la explicación de Surbite, es que el operador se llama "operador ternario ", para que puedas buscar la documentación en google.

A ver surbyte si entendi, esto en alguna manera es para reemplazar en algunas circunstancia el if () else()? ahora se pude anidar como el if()?

Muchas gracias por las respuestas.

Es un ejercicio de oposiciones a profesor de tecnología.

Saludos!

Yo lo uso mucho cuando quiero poner leyendas según el estado de una condición. Es exactamente lo que acabas de decir @Adrian_E

supongamos que leo el estado de un boton y quiero que diga "ON"o "OFF" para HIGH y LOW

entonces pongo

Serial.println(digitalRead(pin)?"ON":"OFF");

gracias por la explicacion.