Что означает `:>` (двоеточие, больше, ака. Улыбка) на языке программирования 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.
Ответы
Ответ 1
Да, это работает.
Он назвал digraph и был изобретен, потому что в старые времена (в середине 1990-х годов) все еще были люди, использующие последовательные терминалы (вид как ПК, но без локальной обработки), а некоторые из них использовали 7-битный набор символов. Он был получен из ASCII, однако в тех случаях, когда ASCII имел [
и ]
, производный набор символов вместо этого имел бы другие глифы (например, Å и Ä).