что мы имеем ввиду в теле программы:
printf("%d", 'C'-'A');
printf - выведи
"%d" - десятичное значение
'C'-'A' - отними значение С от А, то есть 2.
; конец инструкции
printf("%c", 'B' +1);
%c - чар, он же один байт и он же один символ
'B' +1 -сумму 'B' + 1, то есть 'C'
char это числовое значение, которое соответствует порядковому номеру символа в используемом компилятором/машиной СИМВОЛЬНОМ НАБОРЕ, например ASCII. Буквы алфавита во всех символьных наборах идут в лексографическом порядке и по стандарту имеют (если они ПЕЧАТНЫЕ, т.е. всегда, когда речь идёт о символьном наборе, а не использовании char как 1-байтного числа короче) гарантированно НАТУРАЛЬНЫЕ числовые значения. В латинских алфавитах С это третья буква, а А первая, значит, всегда разница между ними будет 2
Первое, что нужно знать, это то, что компилятор выделяет место в зависимости от типа данных, у нас используется тип char, который равен 1 байту. Далее нужно обратить внимание ,что у нас массив и сколько элементов в нем, а так же какая указана размерность.
1) Видим массив типа чар у которого размерность не указана (в [] скобках пусто) но в значении видим символ 1. Это значит, что компилятор выделит 1 байт. Но есть нюанс, когда мы не указываем четкое значение размерности , а просто записываем символы, компилятор сам подсчитывает количество символов и прибавляет к нему 1 символ который мы не видим (терминирующий ноль) и записывает в размерность. И того ответ 2;
2) Тут проще, т.к четко указана размерность [7] и не смотря на то сколько у нас указано символов 1 или 2 или 3, он все равно выделит столько сколько указано в размерности. ответ 7.
Объяснение: