这个带胡子的笑脸表情是什么:"<:]{%>"?

What is this smiley-with-beard expression: "<:]{%>"?

本文关键字:gt lt 笑脸 情是什么      更新时间:2023-10-16

我遇到了下面的程序,它编译时没有错误甚至没有警告:

int main(){
  <:]{%>; // smile!
}

生活例子。

程序是做什么的,那个笑脸是什么?

程序使用有向图表示以下内容:

[] {};

这是一个什么都不做的lambda表达式。相应的符号有以下等价符号:

<: = [
%> = }

虽然现在通常不需要有向图,但当你的键盘缺少使用c++基本源字符集(即图形化字符集)所必需的某些键时,有向图是有用的。组成有向图的字符组合被处理为单个标记。这反过来又弥补了键盘或其他此类硬件或软件的不足。

这是一个使用有向图伪装的空lambda。正常的lambda没有胡子

程序使用了有向图,它允许c++在键盘(或文本编码)上编程,这些键盘可能没有c++通常使用的字符。

代码解析为:

int main(){
  []{}; // smile!
}
int main(){
  <:]{%>; // smile!
}

它基本上是一个Lambda表达式(Lambda表达式是c++ 11的特性之一),使用有向图(有向图和三向图都可以在c++中使用):

[] {};

只使用有向图:

<:]<%}; 
<:]<%%>;
[:>{%>; // like my cubic hat?
[:><%};
[:><%%>;

与Trigraphs混合使用:

<:??)<%??>; // popeye
??(:>{??>; // pirate