Объясните, пожалуйста, кусок кода

Даны два массива A и B размером NxN.

    for (Elem=(!Row)?0:(Row-1); Elem<N; B[Row][Elem]=A[Row][Elem], Elem++) 
      cout<<Elem+1<<", ";
     }

Проблемы с этой частью Elem=(!Row)?0:(Row-1)


Ответы (2 шт):

Автор решения: Igor

Если Row ноль - начать с него, если не ноль - начать с числа меньше на единицу.

→ Ссылка
Автор решения: LisovIlya

Это написан тернарный оператор.
Его вид:

<Выражение> ? <если истина> : <если ложь>

В Вашем случае, если значение Row равно нулю, то тогда значение Elem равно нулю, иначе значению Row-1.

→ Ссылка