Las versiones escritas de los operadores lógicos

Este es el único lugar que he visto and , or not como operadores reales en C ++. Cuando escribí un progtwig de prueba en NetBeans, obtuve el subrayado rojo como si hubiera un error de syntax y pensé que el sitio web estaba equivocado, pero es NetBeans que está mal porque se compiló y ejecutó como se esperaba.

Puedo ver ! siendo favorecido por not pero la legibilidad de and && or parece mayor que sus hermanos gtwigticales. ¿Por qué existen estas versiones de los operadores lógicos y por qué aparentemente nadie lo usa? ¿Es esto realmente válido C ++ o algún tipo de compatibilidad con C que se incluyó con el lenguaje?

    Se originaron en C en el encabezado . En ese momento, había teclados que no podían escribir los símbolos necesarios para && (por ejemplo), por lo que el encabezado contenía #define que los ayudaría a hacerlo, por (en nuestro ejemplo) definir and ser && . Por supuesto, con el paso del tiempo esto se volvió menos utilizado.

    En C ++, se convirtieron en lo que se conoce como tokens alternativos . No es necesario que incluya nada para usar estos tokens en un comstackdor compatible (como tal, la versión C ++ – ified del encabezado C, , está en blanco). Los tokens alternativos son como los tokens regulares, a excepción de la ortografía. Entonces, durante el análisis and es exactamente lo mismo que && , es solo una forma diferente de deletrear lo mismo.

    En cuanto a su uso: debido a que rara vez se usan, su uso a menudo es más sorprendente y confuso de lo que es útil. Estoy seguro de que si fuera normal, serían mucho más fáciles de leer, pero las personas están tan acostumbradas a && y || cualquier otra cosa simplemente distrae.

    EDITAR: he visto un ligero aumento en su uso desde que publiqué esto, sin embargo. Todavía los evito.

    Existen para la usabilidad (soporte de caracteres en los sabores de teclado / pantalla) y la legibilidad general, pero hay otra razón que es hoy en día más pronunciada. Casi ninguna de las respuestas aquí , aquí , ni siquiera la respuesta principal aquí explican la razón principal por la que muchos de nosotros preferimos las versiones de palabras sobre las versiones de símbolos (y una razón principal por la que otros idiomas las usan): errores. Las diferencias entre las versiones de la palabra son muy visibles. Las diferencias entre las versiones de los símbolos son notablemente menores, hasta el punto de atraer a los errores en un grado comparativamente mucho mayor: “x | y” no es “x || y”, sin embargo, cuando se integra en una expresión más grande, muchos de nosotros perder la diferencia Es similar a la combinación accidental común del operador asignación versus igualdad. Por esta razón, me he desconectado de las versiones de símbolos (no fue fácil) a favor de las versiones de palabras. Prefiero que alguien los tome por partida doble debido a nuestro amor por las cosas viejas que a los insectos tentado.

    En C ++, son palabras clave reales. En C, son macros definidas en . Consulte http://web.archive.org/web/20120123073126/http://www.dinkumware.com/manuals/?manual=compleat&page=iso646.html .