2012-04-20 17 views
6

Questo è solo per curiosità chiedo ...Se (rvalue == lvalue)

il 99% del codice che vedo da nessuna parte, quando si utilizza "IF", sarà di formato "Se (rvalue = = LValue) ... ". Esempio:

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

Ci sono altri esempi in cui vedo il contrario:

If ("Hello World" == variableABC) 

Qualcuno sa come questo è cominciato e perché è fatto?

+0

Poiché ciò che sta accadendo qui è un test di uguaglianza, non importa in realtà quale valore è su entrambi i lati di '==', poiché se 'a ==" b "' then '" b "== a' deve anche essere vero Immagino che il primo scenario sia fatto per prevenire l'assegnazione quando si usa '=' invece di '==' in caso di incidente. –

+0

Queste espressioni sono chiamate "Yoda Expressions", vedi http://wiert.me/2010/05/25/yoda-conditions-from-stackoverflow-new-programming-jargon-you-coined/ –

risposta

3

E 'fatto a causa di questo errore in C e C++:

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

In questo modo abbiamo un errore di compilazione:

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

Ad esempio, C# e Java lingue non hanno bisogno di questo trucco.

+0

Incredibile: prima che io sia autorizzato per segnare la risposta, ci sono già 3 risposte. – KurtisLininger

2

Quest'ultimo viene fatto per evitare assegnazioni indesiderate, se, per errore, utilizza l'operatore di assegnazione = anziché l'operatore di uguaglianza == '

Alcuni linguaggi non consentono un incarico in una condizione if-, in cui caso va bene.

Nelle lingue che accettano gli incarichi in condizioni, preferisco sempre andare con quest'ultimo caso.

1

Ciò è dovuto agli errori che gli sviluppatori spesso scrivono = invece di ==. In C++ gli interi possono essere trattati come booleani e non si hanno errori in fase di compilazione.