0

我正在尝试if else发表声明,但每次输入代码时都会出现错误。其中一个说IF was not declared in this scope,我不知道如何声明它和这一切。它还说}在我的 else 声明之前没有,但显然有;请帮忙。

这是代码:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string UserInput;

    cin >> UserInput;

    int x;
    x = 1;

    If (UserInput = x);
    {
        cout << "Type A Word and Press enter";
    }
    else
    {
        Cout << "NOT A USESBLE NUMBER";
    }

    cin.clear();
    cin.ignore(255, '\n');
    cin.get();

    return 0;
}
4

4 回答 4

12
If (UserInput = x);

关键字,就像 C++ 中的变量一样,是区分大小写的,这意味着它们要拼写并且每次编写时都具有相同的大小写。在您的代码中,您IF将出现未声明/未定义,因为编译器认为您将其用作尚未定义的变量或函数。if 语句要小写。所以结果应该是这样的:

if (UserInput = x);

但我们还没有完成。我们这里还有一些问题。if 语句中的单个等号被解释为赋值(它不会抛出错误,因为从技术上讲它是正确的语法,但是很多人通过使用单个等号而不是双等号来犯这个错误)。如果您打算比较而不是分配,则正确的语法是双等号。

if (UserInput == x);

注意:此代码仍然不正确,因为您将字符串与数字进行比较。当您这样做cin >> UserInput时,用户的文本将被转换为变量的字符串,UserInput因此它永远不会x是分配给数字 1 的整数。换句话说,if每次都会因为字符串不是整数而失败。相反,我们应该if (UserInput == "1")将其与作为字符串文字的 1 进行比较。

if (UserInput == "1");

最后的分号不应该在那里。这不是语句的结尾,只是行的结尾。if 语句仍然需要其后的一行代码(可选,如果省略括号),或者包含多行代码的两个花括号。

if (UserInput == "1")
{
    /* ... */

    Cout >> "NOT A USESBLE NUMBER";
}

Cout应该完全小写,因为它是用小写定义的。

在查看了您的代码后,我认为这就是您想要的:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string UserInput;

    cin >> UserInput;

    if (UserInput == "1") {
        cout << "Type A Word and Press enter";
    }
    else {
        cout << "NOT A USESBLE NUMBER";
    }

    cin.clear();
    cin.ignore(255, '\n');
    cin.get();

    // "return 0" is implicit.
}
于 2012-08-20T00:57:24.197 回答
7

您的代码不正确,首先您使用的是大写 I,其次您在行尾有一个分号,第三个相等有 2 个等号

int x;
x=1;
If (UserInput = x);

应该

std::string x("1");
if (UserInput == x)
于 2012-08-20T00:10:29.987 回答
3

如果在 C 中需要小写。

于 2012-08-20T00:09:42.220 回答
0
std::string x='1';
if (UserInput==x)
{
  cout << "Type A Word and Press enter";
} else
{
    cout << "NOT A USESBLE NUMBER";//Cout should be cout
}
于 2012-08-20T00:13:24.463 回答