Подтвердить что ты не робот

Что означает `:>` (двоеточие, больше, ака. Улыбка) на языке программирования C?

Недавно я столкнулся с странной грамматикой языка программирования C.

Во-первых, посмотрим код:

main(void) {
int a[10:> ;
printf("asdf");
return 0;
}

И вы можете скомпилировать его с помощью gcc:

/tmp  gcc sample.c
sample.c: In function ‘main’:
sample.c:3: warning: incompatible implicit declaration of built-in function ‘printf’

Как вы можете видеть, нет никаких ошибок или каких-либо предупреждений, связанных с ним. Таким образом, это означает, что :> равно ] в CPL?

Как это может случиться?

Кстати: я использую gcc 4.2.1.

4b9b3361

Ответ 1

Да, это работает.

Он назвал digraph и был изобретен, потому что в старые времена (в середине 1990-х годов) все еще были люди, использующие последовательные терминалы (вид как ПК, но без локальной обработки), а некоторые из них использовали 7-битный набор символов. Он был получен из ASCII, однако в тех случаях, когда ASCII имел [ и ], производный набор символов вместо этого имел бы другие глифы (например, Å и Ä).