2010-01-28 27 views
6

¿Cuál es el significado de == y cómo difiere de =?¿Cuál es el significado de '==' en C?

¿Cómo sé cuál usar?

+4

Comentarios eliminados porque distraen la atención de la respuesta. SO tiene una política bastante clara de 'Ninguna pregunta es demasiado trivial o demasiado" novato ". 'Declaró en las preguntas frecuentes (http://stackoverflow.com/faq). Si desea debatir sobre esa política, ingrésela en http://meta.stackoverflow.com/ –

Respuesta

20

== es una prueba de igualdad. = es una tarea.

Cualquier buen libro en C debería cubrir esto (bastante pronto en el libro, me imagino).

Por ejemplo:

int i = 3;      // sets i to 3. 
if (i == 3) printf("i is 3\n"); // prints it. 

Sólo ten cuidado con el atroz:

if (i = 4) { } 

que es válido C y con frecuencia atrapa a la gente. Esto realmente asigna 4 a la variable i y lo utiliza como el valor de verdad en la declaración if. Esto lleva a mucha gente a utilizar el más feo pero más seguro:

if (4 == i) {} 

que, en caso de que accidentalmente utiliza = en lugar de ==, es un error en tiempo de compilación en lugar de algo que va a morder en la parte trasera, mientras que su programa se está ejecutando :-)

El operador lógico-es dos caracteres de barra vertical, uno detrás de otro, no un solo carácter. Aquí se alinearon con una lógica y, y una variable llamada b4:

|| 
&& 
b4 

No hay magia allí.

+6

Simple, clara, sin condescendencia. +1. –

+0

http://www.cppreference.com/wiki/operator_precedence, http://www.cplusplus.com/doc/tutorial/. Verifique a través de estos sitios web que fueron de gran ayuda cuando estaba aprendiendo C++. –

5

pruebas == igualdad = asigna un valor

ni están relacionados con ||

11

a == b es una pruebasi un y b son iguales.

a = b se llama un asignación, lo que significa para establecer la variable un de tener el mismo valor que b.

(que escribe | con Shift-\ en la distribución de teclado de Estados Unidos.)

3

debo añadir que en los teclados finlandés y sueco. Símbolo de tubo; |; de O es AltGr (la tecla alt derecha) y la clave <. SI está usando Mac, por otro lado, es la tecla Alt-7.

Me dio mucho sudor cuando comencé a escribir en estos teclados.

2

Ahora que conoce la diferencia entre '==' y '= ", permítame poner algunas palabras de advertencia. Aunque' == 'se usa como una prueba estándar de igualdad entre variables comparables y' = 'utilizada como una asignación interna, el siguiente error de programación es bastante común.

En el ejemplo siguiente y códigos similares, '=' se conoce como "Siempre verdadero" operador condicional.

#include<stdio.h> 
int main() 
{ 
    int i = 10, j = 20; 
    if (i = j) 
     printf("Equal\n"); 
    else 
     printf("NOT Equal\n"); 
    return 0; 
} 

Por lo tanto, la palabra de advertencia es "Nunca use '=' en if declaraciones, a menos que tenga algo mal en su mente."

+3

¿Qué? No hay nada tan elegante como: if (fh = fopen ("file.txt", "r") {process_file (fh); close (fh);} // :-) – paxdiablo

+0

También lo llamaría "siempre cierto" y me molesta como un "operador condicional" de bonificación. Pero un buen consejo, así que +1. – paxdiablo

+0

@paxdiablo: tienes razón ... pero mi intención fue prudencia solo para principiantes. Sin embargo, en códigos ridículos si quiero un descriptor de archivo duplicado como 'fh', esto generaría errores: if (fd = fh = fopen ("archivo.txt", "r") {// algún código}; –

Cuestiones relacionadas