在C编程语言中,`:>`(冒号,大于,又名微笑面)是什么意思?

Voi*_*ain 20 c compiler-construction

最近我遇到了一种奇怪的C语言编程语法.

首先,让我们看看代码:

main(void) {
int a[10:> ;
printf("asdf");
return 0;
}
Run Code Online (Sandbox Code Playgroud)

你可以用gcc编译它:

/tmp  gcc sample.c
sample.c: In function ‘main’:
sample.c:3: warning: incompatible implicit declaration of built-in function ‘printf’
Run Code Online (Sandbox Code Playgroud)

如您所见,没有错误或任何与之相关的警告.所以这意味着在CPL中:>等于]

怎么会发生这种情况?

顺便说一句:我正在使用gcc 4.2.1.

小智 24

是的,这很有效.

它被称为有向图并且被发明,因为在过去(20世纪90年代中期),仍然有人使用串行终端(有点像PC,但没有本地处理),其中一些使用7位字符集.它是从ASCII派生的,但是ASCII具有[],派生的字符集将具有其他字形(例如,Å和Ä).

  • 我很确定有人在1989年之前发明了有向图. (6认同)
  • 对不起,我不清楚我是在谈论C语言.在20世纪90年代中期,C**中的Digraphs**被添加到该语言中.Trigraphs符合1989年的标准.Pascal在20世纪80年代,可能是20世纪70年代使用了有向图(`(.`和`.)``.我敢肯定早些时候也有.不过,现在这些语言都是无用的包袱. (5认同)