Qual è il significato di ==
e in che cosa differisce da =
?Qual è il significato di "==" in C?
Come sapere quale utilizzare?
Qual è il significato di ==
e in che cosa differisce da =
?Qual è il significato di "==" in C?
Come sapere quale utilizzare?
==
è un test per l'uguaglianza. =
è un compito.
Qualsiasi buon libro di C dovrebbe coprire questo (abbastanza presto nel libro che immagino).
Ad esempio:
int i = 3; // sets i to 3.
if (i == 3) printf("i is 3\n"); // prints it.
Basta guardare fuori per l'atroce:
if (i = 4) { }
che è valido C e spesso cattura la gente fuori. Questo in realtà assegna 4 alla variabile i
e lo utilizza come valore di verità nell'istruzione if
. Questo porta un sacco di persone di utilizzare la più brutta, ma più sicura:
if (4 == i) {}
che, se si utilizza accidentalmente =
invece di ==
, è un errore di compilazione, piuttosto che qualcosa che ti morderà sul retro mentre il programma è in esecuzione :-)
L'operatore logico-o è due caratteri barra verticale, uno dopo l'altro, non un un singolo carattere. Qui si è allineato con un logico-e, e una variabile denominata b4
:
||
&&
b4
Niente magia lì.
Semplice, chiaro, senza condiscendenza. +1. –
http://www.cppreference.com/wiki/operator_precedence, http://www.cplusplus.com/doc/tutorial/. Controlla attraverso questi siti web che sono stati di grande aiuto quando stavo imparando C++. –
test == uguaglianza = assegna un valore
non sono legati a ||
a == b
è un prova se un e b sono uguali.
a = b
è chiamato un assegnazione, che significa impostare la variabile un ad avere lo stesso valore b.
(digitati |
con Shift- \
nel layout di tastiera degli Stati Uniti.)
Potrei aggiungere che nel tastiere finlandese e svedese. Simbolo del tubo; |; di OR è AltGr (il diritto alt) e < chiave. Se stai usando Mac d'altra parte è la chiave Alt-7.
Mi ha dato un sacco di sudore quando ho iniziato a digitare su queste tastiere.
Ora che si conosce la differenza tra "==" e "=", lasciatemi alcune parole di cautela, sebbene "==" sia usato come test standard di uguaglianza tra variabili comparabili e "=" usato come assegnazione interna al cast tipografico, il seguente errore di programmazione è silenzioso.
Nell'esempio seguente e codici simili, '=' è noto come "Operatore condizionale sempre vero".
#include<stdio.h>
int main()
{
int i = 10, j = 20;
if (i = j)
printf("Equal\n");
else
printf("NOT Equal\n");
return 0;
}
Quindi, la parola di cautela è "Non usare mai '=
' in if
dichiarazioni, se non avete qualcosa di male nella tua mente."
Cosa? Non c'è niente di così elegante come: if (fh = fopen ("file.txt", "r") {process_file (fh); close (fh);} // :-) – paxdiablo
Lo chiamerei anche "sempre vero" e incasinare i come bonus "operatore condizionale. Ma buon consiglio quindi +1. – paxdiablo
@paxdiablo: hai ragione ... ma intendevo la mia parola di cautela solo per i principianti. Tuttavia, nei codici goofy, se voglio un descrittore di file duplicato come 'fh', ciò causerebbe errori grossolani: if (fd = fh = fopen ("file.txt", "r") {// codice}; –
Commenti eliminati perché hanno distratto l'attenzione dalla risposta. SO ha una politica piuttosto chiara di "Nessuna domanda è troppo banale o troppo" novellino "." Detto nelle FAQ (http://stackoverflow.com/faq). Se si desidera discutere di tale politica, si prega di prenderlo su http://meta.stackoverflow.com/ –