2010-01-28 24 views
6

Qual è il significato di == e in che cosa differisce da =?Qual è il significato di "==" in C?

Come sapere quale utilizzare?

+4

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/ –

risposta

20

== è 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ì.

+6

Semplice, chiaro, senza condiscendenza. +1. –

+0

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++. –

5

test == uguaglianza = assegna un valore

non sono legati a ||

11

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.)

3

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.

2

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."

+3

Cosa? Non c'è niente di così elegante come: if (fh = fopen ("file.txt", "r") {process_file (fh); close (fh);} // :-) – paxdiablo

+0

Lo chiamerei anche "sempre vero" e incasinare i come bonus "operatore condizionale. Ma buon consiglio quindi +1. – paxdiablo

+0

@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}; –