使用未声明的标识符“ cardNum”

时间:2020-06-01 19:24:27

标签: c cs50 undeclared-identifier

我在cs50的环境中使用库CS50的功能,这是将值存储在通过输入收集它的变量上的方法:

long i = get_long("Enter a long: ");

这是我的代码:

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

int main(void)
{

do
{
    long cardNum = get_long("Card number:\n");
}
while (0 <= cardNum <= 9999999999999999);


if (340000000000000 <= cardNum <= 379999999999999)
{

...等等。

问题已经解决

使用未声明的标识符'cardNum'

我添加了:

long cardNum;

do-while循环之前;问题已解决。

1 个答案:

答案 0 :(得分:0)

您正在do块中使用cardNum。在do的范围之外声明它,您的错误将消失。

正确的方法-

long cardNum = 0;
do
{
    cardNum = get_long("Card number:\n");
}
while (0 <= cardNum && cardNum <= 9999999999999999);

在您的情况下,由于cardNum仅在do块中作用域,并且在一段时间内不可见,因为它的作用域在离开do块时就结束了,因此出现错误。这就是为什么您将use of undeclared identifier 'cardNum'作为错误的原因。编译器将其视为while()函数中未声明的变量。

注意:您最好使用long long int,因为long的最大范围是基于实现的,有时可能仅限于2,147,483,647(最可能是32位系统)。您也可以使用int cardNum[20]或最高限制来代替20