“<:] {%>”수염이있는 웃는 표현은 무엇입니까?


300

다음 프로그램을 보았습니다.이 프로그램은 오류 나 경고없이 컴파일됩니다.

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

라이브 예.

프로그램은 무엇을하고, 그 웃는 표현은 무엇입니까?


44
나는이 라인들을 따라 프로그래밍 클래스에 보너스로 무언가를 주었다. 나는 악하다. Google에서는 매우 검색 할 수 없습니다.
chris

57
좋은 할례; "ungoogleable"이라고 말한 것으로 고소 된 것으로 들었습니다.
matt

3
@matt 그들은 sweeden을 고소했다 : bbc.com/news/magazine-21956743
Edward

2
허용되는 답변을 변경 하시겠습니까?
nhahtdh

4
@Mysticial : 재미있는 답변은 재미 있지만 하루가 끝날 무렵 독자에게 도움이되지는 않습니다.
nhahtdh

답변:



354

이 프로그램은 digraph 를 사용 하여 다음을 나타냅니다.

[] {};

이것은 아무것도하지 않는 람다 식입니다. 해당 기호는 다음과 같습니다.

<: = [
%> = }

비록 오늘날에는 일반적으로 필요하지 않지만, digraphs는 키보드에 C ++의 기본 소스 문자 세트, 즉 그래픽 키를 사용하는 데 필요한 특정 키가 없을 때 유용합니다. digraph를 구성하는 문자 조합은 단일 토큰으로 처리됩니다. 이는 불충분하게 장착 된 키보드 나 기타 하드웨어 또는 소프트웨어를 보완합니다.


66

이 프로그램은 digraphs 를 사용하여 C ++에서 일반적으로 사용하는 문자가 없을 수있는 키보드 (또는 텍스트 인코딩)로 C ++ 프로그래밍을 허용합니다.

코드는 다음과 같이 해결됩니다.

int main(){
  []{}; // smile!
}

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

그것은 기본적으로 A의 람다 식 (람다 표현식 중 하나 인 C ++ 11 개 기능 사용) 이중 음자 (이중 음자와 trigraph를 모두 C에서 작동 ++) :

[] {};

digraph 만 사용 :

<:]<%}; 

<:]<%%>;

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

[:><%};

[:><%%>;

Trigraphs와 혼합 :

<:??)<%??>; // popeye

??(:>{??>; // pirate
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.