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