c - 使用未声明的标识符“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 循环之前;问题解决了。
解决方案
您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
.
推荐阅读
- node.js - 如何访问使用混合类型模式的 mongoose 查询的 mongodb 数据中的每个字段值
- python - 有机会的记号
- reactjs - ReactNative & Expo:离子不渲染
- dataframe - 有没有办法将 Spark 数据帧写入 .dat 文件?
- javascript - 如何使用 JavaScript 包含 HTML 页面?
- java - 用于消息识别的 API(文本而非语音)
- c++ - 在 Visual Studio 中运行/调试 c++ 时如何在最后等待输入
- python - 使用特定条件Python加入列表中的项目
- javascript - datalist 如何判断下拉菜单中是否选择了输入
- wordpress - 如何使用“withSelect”更新动态 Gutenberg 块中的 REST-API 调用