2013-04-04 35 views
6

我有以下代码:如何简单比较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; 
} 

不管我给什么输入,总是返回true。我的语法关闭了吗?任何帮助,将不胜感激。

+3

啊,我有这个错误的次数。在if中尝试==而不是=。只要x [0]的计算结果为真,简单的赋值就会成立。 – engineerC 2013-04-04 03:09:11

+1

您是否尝试过调试? – IamStalker 2013-04-04 03:10:33

+0

@CaptainMurphy,并通过评估为真,你的意思是评估为不是0. – Alex 2013-04-04 03:10:46

回答

12

在C++中,您使用==进行比较。 =是一项任务。它可以在if声明的条件下使用,但它会评估为true除非性格'\0'(不'0',因为它是在你的情况下):

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

我添加了第二个=,但现在它总是返回假,即使我输入0.谢谢大家的所有帮助到目前为止。 – 2013-04-04 03:14:24

+0

没关系,搞清楚了,谢谢你们! – 2013-04-04 03:16:16

+1

@DmitriyPotemkin堆栈溢出允许您删除不再适用的注释。指向评论,然后点击旁边的小十字。 – dasblinkenlight 2013-04-04 03:18:14

1

在if语句使用==。对于如:

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

==比较,但=使得fg等于x[0],这就是为什么你每次都获得正确的。