Skif .
Skif .

Помогите прочесть код функции c++

Есть функция, которая в игре "Змейка" выводит на экран игровое поле, ограниченное квадратом из знаков "#" размером 13х17. Функция исправно работает, но я затрудняюсь в ее понимании.

char a[1000][1000]; // массив таблицы

const int N = 13, M = 17; // размер таблицы (ширина и высота)

void show_table()

{

system("cls");

for (int i = 0; i <= N + 1; ++i)

for (int j = 0; j <= M + 1; ++j)

cout << (i == 0 || j == 0 || i == N + 1 || j == M + 1 ? '#' : a[i][j]) << (j <= M ? "" : "\n");

}

А именно интересует здесь строка:

cout << (i == 0 || j == 0 || i == N + 1 || j == M + 1 ? '#' : a[i][j]) << (j <= M ? "" : "\n");

Никогда раньше я не сталкивался с такими строками, поэтому не совсем понимаю, что здесь написано. Полагаю, что-то вроде "Если i равно нулю, или j равно нулю, или i равно N+1, или j равно M+1, то а [i][j] равен '#', вывести на экран a[i][j]. Затем если j меньше или равно M, то вывести на экран непонятно что, а затем переход на новую строку". Поправьте, где я неправ 🙂

Строка интересная, хоть и оказалась сложна в прочтении. Объясните пожалуйста что означают здесь знаки вопроса и двоеточия, прав ли я оказался в своей догадке.

А также объясните, почему цикл for (int i = 0; i <= N + 1; ++i) и вложенный цикл for (int j = 0; j <= M + 1; ++j) нормально работают без фигурных скобок.

КГ
Кристина Глинова

a?b:c
если а ненулевое делать b. иначе делать с.
ну и результат делания вывести в cout.

А скобки нужны только вокруг группы операций для объединения в один блок- тут их нет, хотя можно и скобочками окружить каждый чих как в школе учат

Похожие вопросы
Помогите поправить код на C#
помогите найти ошибку в коде C++
Программисты помогите! есть код на C/C++
Помогите в написании кода на C#
Помогите прокоментировать маленький код в c++
Помогите реализовать часть кода (C#)
помогите написать программу в c++ на функции
Помогите написать функцию к задаче на C++
помогите разобраться со строкой кода на C#
Как прочесть код проги? Вот есть прога, как прочесть её код чтобы внести изменения?