首页 > 解决方案 > 使用未声明的标识符“cardNum”

问题描述

我在 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 循环之前;问题解决了。

标签: ccs50undeclared-identifier

解决方案


cardNum在 do 块中使用。在 do 块之外声明它,你的错误就会消失。

正确方法——

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

在您的情况下,您收到错误,因为cardNum仅适用于 do 块并且在 while 内不可见,因为它的范围在离开do块后立即结束。这就是你得到 use of undeclared identifier 'cardNum'错误的原因。编译器将其视为函数内部未声明的变量while()

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


推荐阅读