2013-04-04 10 views
6

Mam następujący kod:Jak mogę po prostu porównać znaki w 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; 
} 

Nieważne co wejście daję, true jest zawsze zwrócony. Czy moja składnia jest wyłączona? Każda pomoc będzie doceniona.

+3

Ah, ile razy miałem ten błąd. Spróbuj == zamiast = w if. Dopóki x [0] zostanie ustawione na true, proste przyporządkowanie będzie prawdziwe. – engineerC

+1

Czy próbowałeś debugować? – IamStalker

+0

@CaptainMurphy, i przez porównanie do wartości true masz na myśli ocenę do 0. – Alex

Odpowiedz

12

W języku C++ używa się porównania ==. = to zadanie. Może być stosowany w warunkach instrukcji if, ale to będzie ocenić na true chyba że charakter jest '\0' (nie '0', jak to jest w Twoim przypadku):

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

Dodałem sekundę =, ale teraz zawsze zwraca ona wartość false, nawet jeśli wprowadzę 0. Dziękuję wszystkim za całą pomoc. –

+0

Nieważne, wymyśliłem to, dzięki chłopaki! –

+1

@DmitriyPotemkin Stack Overflow umożliwia usuwanie komentarzy, jeśli nie będą już obowiązywać. Wskaż komentarz i kliknij mały krzyżyk obok niego. – dasblinkenlight

1

ciągu jeśli użytkowania oświadczenie ==. Dla np

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

== porównuje, ale = sprawia fg równa x[0], i dlatego masz prawda za każdym razem.

Powiązane problemy