如何在C++中简单比较字符?

12

我有以下代码:

#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。是我的语法有误吗?非常感谢您的帮助。
无论输入什么,始终返回true。语法有误吗?需要帮助。

4
啊,我曾经遇到过这个错误很多次。在if语句中,尝试使用“==”而不是“=”。只要x [0]评估为真,简单的赋值就是真的。 - engineerC
1
你尝试过调试了吗? - hackp0int
@CaptainMurphy,通过“evaluate to true”您的意思是指评估为非0。 - Alex
2个回答

18

在C++中,您使用==进行比较。 =是赋值运算符。 它可以在if语句的条件中使用,但除非字符为'\0'(不是像您的情况中的'0'),否则它将评估为true

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

我添加了第二个等号,但现在即使我输入0,它也总是返回false。感谢大家迄今为止提供的所有帮助。 - Dmitriy Potemkin
1
@DmitriyPotemkin Stack Overflow允许您删除不再适用的评论。指向该评论,然后单击旁边的小叉号。 - Sergey Kalinichenko

2

在if语句中使用==。例如:

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

== 用于比较,但 = 则是将 fg 赋值为 x[0],这就是每次都返回 true 的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接