error:在此范围内未声明变量c ++

时间:2017-10-18 20:08:42

标签: c++

我想编写程序,它将两个数字m和n作为输入,并给出m数的第n位数。示例m = 1358 n = 2输出:5

git rev-parse

但我收到了一个错误:' m_new'在这方面没有申明。为什么我会收到此错误以及如何解决此问题?

3 个答案:

答案 0 :(得分:4)

m_new变量是嵌套while循环的本地变量,不能在其范围之外使用。大括号{}表示的范围决定了可见性:

int main() {
    // can't be used here
    while (true) {
        // can't be used here
        while (true) {
            string m_new = to_string(m);
            // can only be used here
        }
        // can't be used here
        while (check != 'y'&& check != 'n') {
            // can't be used here
        }
        // can't be used here
    }
    // can't be used here
}

重新考虑设计只使用一个while循环:

int main(){
    char check = 'y';
    while (std::cin && choice == 'y') {
        int m = 0, n = 10;
        std::cout << "Enter please number m and which digit you want to select";
        std::cin >> m >> n;
        string m_new = to_string(m);
        // the rest of your code
        std::cout << "Please enter y or n\n";
        std::cin >> check;
    }
}

现在,m_new循环中的所有内容都可以看到while变量。

答案 1 :(得分:3)

在while循环中声明了

m_new。在{...}块内声明的任何内容都只存在于该块内。最后使用它:

    cout << "The position" << n << "Of integer" << m << "is:" << m_new.substr(n,1);

在块之外,因此变量不再存在。

答案 2 :(得分:0)

变量“m_new”刚好在“while(true)”范围内,当你要求这个变量退出循环时,它会抛出一个编译时错误。

while(true){
    ...
    string m_new = to_string(m);
    ...
}
...
cout << "The position" << n << "Of integer" << m << "is:" << m_new.substr(n,1);
                                                             ^
...