2 недели назад
🖥 Этот код на C валиден до сих пор, хотя выглядит как сломанный
Вот программа, которая спокойно компилируется и выводит 20: #include <stdio.h> int main(void) <% int arr<:3:> = <% 10, 20, 30 %>; printf("%d\n", arr<:1:>); return 0; %> Вместо фигурных и квадратных скобок здесь диграфы. Пара <% и %> заменяет { и }, а <: и :> заменяют [ и ]. Это не баг и не расширение компилятора, а часть стандарта. Причина историческая. В семидесятых и позже на многих европейских клавиатурах и в национальных вариантах кодировки ISO 646 этих символов просто не было, их места занимали буквы с диакритикой...