C语言已声明的creditcardno提示未声明标识符错误如何解决?
错误原因
- 变量作用域不匹配:C语言中函数内部定义的变量为局部变量,仅在所属函数的
{}范围内生效。你声明的creditcardno是main函数内的局部变量,超出main函数的闭合大括号后就会被系统回收,后续代码访问时自然会被识别为未声明的标识符。 - 代码结构不符合C语言规范:统计卡号位数的可执行代码直接写在了
main函数之外,C语言要求所有可执行语句必须放在函数内部,不能直接写在全局作用域。 - 额外的语法&逻辑错误:
while (cc>0);末尾多了分号,会导致循环体为空,后续大括号内的代码不会被循环执行,触发死循环- 循环体内赋值逻辑错误,
cc = creditcardno/10;每次都用原始卡号计算,无法逐步缩短卡号,同样会触发死循环
修复方案
将统计卡号位数的代码全部移到main函数内部,修正循环语法和逻辑即可,完整修复代码如下:
#include <stdio.h> #include <cs50.h> int main(void) { long creditcardno; do { creditcardno = get_long("enter"); } while (creditcardno<1000000000000 || creditcardno > 9999999999999999); int i = 0; long cc = creditcardno; while (cc>0) { cc = cc/10; i++; } // 后续可继续使用i(卡号位数)完成其他逻辑 return 0; }
内容的提问来源于stack exchange,提问作者Splendid Digital Solutions
相关产品推荐
相关产品推荐

