C ++:IF未在此范围内声明

时间:2012-08-20 00:07:38

标签: c++

我正在尝试制作if else语句,但每次输入代码时都会出现错误。其中一个人说IF was not declared in this scope,我不知道如何宣布它和所有这一切。它还说在我的其他陈述之前没有},但显然有;请帮忙。

这是守则:

#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 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分:7)

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

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

应该是

std::string x("1");
if (UserInput == x)

答案 2 :(得分:3)

如果需要在C中小写。

答案 3 :(得分: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
}