Error: use of undeclared identifier on an apparently declared variable

Error: use of undeclared identifier on an apparently declared variable

#include <stdio.h>
#include <cs50.h>

int main(void)
{
    long creditcardno;
    do
    {
        creditcardno = get_long("enter");
    }
    while (creditcardno<1000000000000 || 
           creditcardno > 9999999999999999);

}


int i = 0;
long cc = creditcardno;
while (cc>0);
{
    cc = creditcardno/10;
    i++;
}

在上面的 C 程序中,我打算有一个名为 cc 的 long 类型的变量,它将使用用户输入的 creditcardno 的值进行初始化。

收到错误消息:

credit.c:14:11:错误:使用了未声明的标识符 'creditcardno' 通过“未声明的标识符”,clang 意味着您使用了 在 credit.c 的第 14 行命名 creditcardno 没有被定义。如果您打算使用 creditcardno 作为 变量,确保通过指定其类型来声明它,并且 检查变量名是否拼写正确。

据我了解,我定义了变量 creditcardno,因为该变量存储用户输入的信用卡值。

您在 main() 之外编写了这部分代码。这就是它显示错误的原因。

int i = 0;
long cc = creditcardno;
while (cc>0);
{
    cc = creditcardno/10;
    i++;
}

creditcardno 是主范围内的变量。这就是为什么它只能从主范围访问的原因。