2013-04-04 11 views
6

Ho il codice seguente:Come faccio a confrontare semplicemente caratteri in C++?

#include <iostream> 
using namespace std; 
int main() 
{ 
    char fg; 
    cin>>fg; 
    char x[20]; 
    x[0]='0'; 
    if(fg=x[0]) 
    { 
     cout<<"It's true!"<<endl; 
     return true; 

    } 
    cout<<"It's false!"<<endl; 
    return false; 
} 

Non importa quello di ingresso dò, true viene sempre restituito. La mia sintassi è disattivata? Qualsiasi aiuto sarebbe apprezzato.

+3

Ah, il numero di volte in cui ho avuto questo errore. Prova == invece di = nel if. Finché x [0] diventa true, l'assegnazione semplice sarà vera. – engineerC

+1

Hai provato a eseguire il debug? – IamStalker

+0

@CaptainMurphy, e valutando per vero intendi valutare per non 0. – Alex

risposta

12

In C++ si utilizza == per il confronto. Il = è un compito. Può essere utilizzato nella condizione di un if dichiarazione, ma sta andando a valutare al true a meno che il personaggio è '\0' (non '0', come è nel tuo caso):

if(fg == x[0]) 
{ 
    ... 
} 
+0

Ho aggiunto un secondo =, ma ora restituisce sempre falso anche se inserisco 0. Grazie a tutti per tutto l'aiuto finora. –

+0

Non importa, capito, grazie ragazzi! –

+1

@DmitriyPotemkin Overflow dello stack consente di eliminare i commenti se non vengono più applicati. Indica il commento e fai clic sulla piccola croce accanto ad esso. – dasblinkenlight

1

All'interno se l'uso dichiarazione ==. Per esempio:

if (fg == x[0]) { 
    //........... 
} 

== confronta, ma = rende fg pari a x[0], ed è per questo che si ottiene vero ogni volta.

Problemi correlati