C - 在函数中使用未声明的标识符.CS50

Kar*_*rim 2 c validation function cs50

我正在重写我的CS50信用解决方案以使用功能.定义readCardNumber()时偶然发现错误.

long long readCardNumber()
{
    do
    {
        long long result = get_long_long("Enter card number to verify: \n");
        if (result < 0)
        {
            printf("Retry: \n");
        }
    }
    while (result < 0);

    return result;
}
Run Code Online (Sandbox Code Playgroud)

我使用CS50.h https://reference.cs50.net/cs50/get_long_long来获取号码.由于以下原因,我无法编译此解决方案:

error: use of undeclared identifier 'result'
Run Code Online (Sandbox Code Playgroud)

有人可以体验一下这里的问题吗?我在我的代码开头声明了函数,并在函数中声明和初始化结果.验证该数字的更好方法是什么?

https://docs.cs50.net/2018/x/psets/1/credit/credit.html - 解决方案规范我试图重做.

dbu*_*ush 7

result变量在的内部声明do...while块.它在块外不可见,其中包括条件while.

您需要在循环外部移动变量定义:

long long result;
do
{
    result = get_long_long("Enter card number to verify: \n");
    if (result < 0)
    {
        printf("Retry: \n");
    }
}
while (result < 0);
Run Code Online (Sandbox Code Playgroud)