¿Cuál es la diferencia entre if (CONST == variable) o if (variable == CONST)?

¿Hay alguna diferencia en el orden del operador de comparación?

#define CONST_VALUE 5 int variable; ... if ( variable == CONST_VALUE ) // Method 1 ... OR if ( CONST_VALUE == variable ) // Method 2 ... 

¿Es esto simplemente una cuestión de preferencia o hay una razón convincente para un orden de comparación en particular?

La razón por la que algunas personas usan el método 2 es porque obtendrá un error de comstackción si escribe mal = = en lugar de ==.

Sin embargo, tendrá personas (como yo) que seguirán usando el método 1 porque lo encuentran más legible y si hay un error, se detectará durante las pruebas (o, en algunos casos, el análisis estático del código).

La única diferencia es que (CONST_VALUE == variable) hace que el error tipográfico común (CONST_VALUE = variable) sea imposible de comstackr.

En comparación, si (variable = CONST_VALUE) resultará en que el comstackdor piense que usted quiso asignar CONST_VALUE a ‘variable’.

La confusión = / == es una fuente bastante común de errores en C, por lo que las personas están tratando de solucionar el problema con las convenciones de encoding.

Por supuesto, esto no te salvará si estás comparando dos variables.

Y la pregunta parece ser un duplicado de ¿Cómo verificar si hay iguales? (0 == i) o (i == 0)

Y aquí hay más información: http://cwe.mitre.org/data/definitions/481.html

Como han mencionado otros, la variable CONST_VALUE == evita el = error tipográfico.

Sigo haciendo “variable == CONST_VALUE”, porque creo que es más legible y cuando veo algo como:

 if(false == somevariable) 

Mi presión sanguínea sube.

La primera variante

 if (variable == CONST_VALUE) 

Es mejor, porque es más legible. Sigue la convención (también utilizada en matemáticas) de que el valor que cambia más es lo primero.

La segunda variante

 if (CONST_VALUE == variable) 

es usado por algunas personas para evitar una mezcla de verificación de igualdad con la tarea

 if (CONST_VALUE = variable) 

Hay mejores formas de lograrlo, por ejemplo, habilitando y prestando atención a las advertencias del comstackdor.

Otros ya señalaron el motivo. = / == confusión. Prefiero la primera versión porque sigue el proceso de pensamiento más de cerca. Algunos comstackdores alivian la confusión de = y == dando una advertencia cuando encuentra algo como

 if(a=b) 

en este caso, si realmente quería hacer la asignación, se ve obligado a escribir

 if((a=b)) 

la cual escribiría entonces como

 if( (a=b) != 0) 

Para evitar la confusión.

Dicho esto, tuvimos en nuestro caso de código 1 donde tuvimos una confusión = / == y escribirla al revés no habría ayudado, ya que era una comparación entre vars.