¿Cuál es esta expresión de sonrisa con barba: "<:] {%>"?


300

Me encontré con el siguiente programa, que se compila sin errores ni advertencias:

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

Ejemplo en vivo.

¿Qué hace el programa y qué es esa expresión sonriente?


44
Le di algo en esta línea a una clase de programación como un bono. Soy malvado, lo sé. Es muy inescrutable en Google.
Chris

57
Buena circunlocución; Escuché que te demandaron por decir "ingobernable".
mate

3
@matt demandaron a Suecia
Edward

2
¿Podría considerar cambiar la respuesta aceptada?
nhahtdh

44
@Mysticial: Las respuestas divertidas son divertidas, pero al final del día, realmente no ayudan a los lectores.
nhahtdh

Respuestas:



354

El programa usa dígrafos para representar lo siguiente:

[] {};

Esta es una expresión lambda que no hace nada. Los símbolos correspondientes tienen estos equivalentes:

<: = [
%> = }

Aunque generalmente no son necesarios hoy en día, los dígrafos son útiles para cuando su teclado carece de ciertas teclas necesarias para usar el conjunto de caracteres de origen básico de C ++, es decir, las gráficas. La combinación de los caracteres que forman un dígrafo se procesan como una sola ficha. Esto a su vez compensa los teclados u otro hardware o software insuficientemente equipados.


66

El programa está utilizando dígrafos , que permiten la programación en C ++ con teclados (o codificaciones de texto) que pueden no tener los caracteres que C ++ usa típicamente.

El código resuelve esto:

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

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

Básicamente es una expresión Lambda (la expresión Lambda es una de las características de C ++ 11 ) que usa dígrafos (tanto los dígrafos como los trigrafos funcionan en C ++):

[] {};

Usando solo dígrafos:

<:]<%}; 

<:]<%%>;

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

[:><%};

[:><%%>;

Mezclándolos con Trigraphs:

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

??(:>{??>; // pirate
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.