Jakie jest to wyrażenie „buźka z brodą”: „<:] {%>”?


300

Natknąłem się na następujący program, który kompiluje się bez błędów, a nawet ostrzeżeń:

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

Przykład na żywo.

Co robi program i jakie jest to wyrażenie buźki?


44
Jako bonus dałem coś w tym kierunku klasie programistycznej. Jestem zły, wiem. Jest bardzo nie do przeszukiwania w Google.
Chris

57
Niezłe obrzezanie; Słyszę, że pozywają cię za powiedzenie „nie do przeszukiwania”.
mat

3
@matt Pozwały Szwecji: bbc.com/news/magazine-21956743
Edward

2
Czy możesz rozważyć zmianę zaakceptowanej odpowiedzi?
nhahtdh

4
@Mysticial: Zabawne odpowiedzi są zabawne, ale pod koniec dnia tak naprawdę nie pomagają czytelnikom.
nhahtdh

Odpowiedzi:



354

Program wykorzystuje digraphy do reprezentowania następujących elementów:

[] {};

To wyrażenie lambda, które nic nie robi. Odpowiednie symbole mają następujące odpowiedniki:

<: = [
%> = }

Mimo że są one dziś na ogół niepotrzebne, digraphy są przydatne, gdy na klawiaturze brakuje pewnych klawiszy niezbędnych do korzystania z podstawowego źródłowego zestawu znaków C ++, a mianowicie graficznych. Kombinacja znaków tworzących wykrój jest przetwarzana jako pojedynczy token. To z kolei uzupełnia niewystarczająco wyposażone klawiatury lub inny sprzęt lub oprogramowanie.


66

Program wykorzystuje digraphy , które umożliwiają programowanie w C ++ za pomocą klawiatury (lub kodowania tekstu), które mogą nie mieć znaków, których zwykle używa C ++.

Kod rozwiązuje to:

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

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

Zasadniczo jest to wyrażenie Lambda ( wyrażenie Lambda jest jedną z funkcji C ++ 11 ) za pomocą digraphów (zarówno digraphs, jak i trigrafów działa na C ++):

[] {};

Używając tylko digrafów:

<:]<%}; 

<:]<%%>;

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

[:><%};

[:><%%>;

Mieszanie ich z Trigraphs:

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

??(:>{??>; // pirate
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.