¿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?
¿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?
==
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í.
Simple, clara, sin condescendencia. +1. –
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++. –
pruebas == igualdad = asigna un valor
ni están relacionados con ||
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.)
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.
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."
¿Qué? No hay nada tan elegante como: if (fh = fopen ("file.txt", "r") {process_file (fh); close (fh);} // :-) – paxdiablo
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
@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}; –
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/ –