编译报错use of undeclared identifier 'finalTotal',如何在while外声明变量
报错原因
C语言遵循块级作用域规则:在{}包裹的代码块内部声明的变量仅在块内部生效,离开块后会被系统销毁。finalTotal声明在while循环的代码块内部,块外的printf语句无法识别该变量,因此触发未声明标识符错误。
修复方法
- 在while循环之前、与
printf同作用域的位置声明finalTotal变量,可根据业务逻辑初始化默认值,避免后续出现未初始化警告 - 删除while循环内部赋值语句前的
int关键字,避免重复声明块内同名局部变量,覆盖外部的变量
修正后代码
// 循环外部声明变量 int finalTotal = 0; while (total<endn) { // 仅执行赋值操作 finalTotal = (total + total/3 - total/4); } printf("no of years is %i\n", finalTotal);
如果循环存在一次都不执行的场景,可根据业务需求调整finalTotal的初始值即可。
内容的提问来源于stack exchange,提问作者Marco Maher
相关产品推荐
相关产品推荐

