Apa ekspresi tersenyum-dengan-janggut ini: "<:] {%>"?


300

Saya menemukan program berikut, yang mengkompilasi tanpa kesalahan atau bahkan peringatan:

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

Contoh langsung.

Apa yang dilakukan program, dan apa itu ekspresi smiley?


44
Saya memberikan sesuatu seperti ini kepada kelas pemrograman sebagai bonus. Saya jahat, saya tahu. Ini sangat tidak dapat ditelusuri di Google.
chris

57
Sunat yang bagus; Saya mendengar mereka menggugat Anda karena mengatakan "ungoogleable".
matt

3
@matt Mereka menggugat sweeden: bbc.com/news/magazine-21956743
Edward

2
Bisakah Anda mempertimbangkan untuk mengubah jawaban yang diterima?
nhahtdh

4
@Mysticial: Jawaban yang menyenangkan itu menyenangkan, tetapi pada akhirnya, itu tidak benar-benar membantu pembaca.
nhahtdh

Jawaban:



354

Program ini menggunakan digraf untuk mewakili yang berikut:

[] {};

Ini adalah ekspresi lambda yang tidak melakukan apa-apa. Simbol yang sesuai memiliki persamaan ini:

<: = [
%> = }

Meskipun mereka umumnya tidak dibutuhkan hari ini, digraf berguna untuk saat keyboard Anda tidak memiliki tombol tertentu yang diperlukan untuk menggunakan set karakter sumber dasar C ++, yaitu yang grafis. Kombinasi karakter yang membentuk digraf diproses sebagai token tunggal. Pada gilirannya, ini menggantikan keyboard yang tidak lengkap atau perangkat keras atau perangkat lunak lainnya.


66

Program ini menggunakan digraf , yang memungkinkan pemrograman C ++ dengan keyboard (atau penyandian teks) yang mungkin tidak memiliki karakter yang biasanya digunakan C ++.

Kode mengatasi ini:

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

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

Ini pada dasarnya adalah ekspresi Lambda ( ekspresi Lambda adalah salah satu fitur C ++ 11 ) menggunakan digraf (baik digraf dan trigraph berfungsi pada C ++):

[] {};

Hanya menggunakan digraf:

<:]<%}; 

<:]<%%>;

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

[:><%};

[:><%%>;

Mencampurnya dengan Trigraphs:

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

??(:>{??>; // pirate
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.