2012-04-20 10 views
6

Esto es sólo por curiosidad te pido ...(RValue == lValue)

99% del código veo en cualquier lugar, cuando se utiliza "SI", será del formato "Si (RValue = = LValue) ... ". Ejemplo:

If (variableABC == "Hello World") ... 

Hay otros ejemplos en los que veo lo contrario:

If ("Hello World" == variableABC) 

Alguien sabe cómo esto comenzó y por qué se hace?

+0

Dado que lo que está sucediendo aquí es una prueba de igualdad, en realidad no importa qué valor esté a cada lado de '==', ya que si 'a ==" b "' then '" b "== a' también debe ser cierto. Imagino que el primer escenario se hace para evitar la asignación cuando usas '=' en lugar de '==' en caso de accidente. –

+0

Estas expresiones se llaman "Expresiones Yoda", ver http://wiert.me/2010/05/25/yoda-conditions-from-stackoverflow-new-programming-jargon-you-coined/ –

Respuesta

3

Se lleva a cabo debido a este error en C y C++:

if (variableABC = "Hello World") ... 
       ^
       (Watch here) 

De esta manera tenemos un error de compilación:

if ("Hello World" = variableABC) 
       ^
        (Watch here) 

Por ejemplo, C# y Java idiomas no necesitan esta truco.

+0

Sorprendente: antes de que me permitan para marcar la respuesta, ya hay 3 respuestas. – KurtisLininger

2

Este último se hace para evitar asignaciones involuntarias, si, por error, utiliza el operador de asignación = en lugar del operador de igualdad == '

Algunos lenguajes no permiten una asignación en una condición if, en el cual caso, está bien.

En idiomas que aceptan asignaciones en condiciones if, siempre prefiero ir con el último caso.

1

Esto se hace debido a los errores que los desarrolladores suelen escribir = en lugar de ==. En C++, los enteros pueden tratarse como booleanos y no hay errores en el tiempo de compilación.

Cuestiones relacionadas