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

时间:2013-05-26 13:08:56

标签: c compiler-construction

最近我遇到了一种奇怪的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中的]

怎么会发生这种情况?

BTW:我正在使用gcc 4.2.1。

1 个答案:

答案 0 :(得分:24)

是的,这很有效。

它被称为digraph并且之所以被发明,是因为在过去(20世纪90年代中期),仍然有人使用串行终端(有点像PC,但没有本地处理),其中一些使用了7-bit character set。它是从ASCII派生的,但是在ASCII有[]的情况下,派生字符集将改为使用其他字形(例如,Å和Ä)。