C语言出现declaration shadows a local variable编译报错如何解决
报错原因
- 变量重名遮蔽:你在
main函数开头已经声明了char answer,在do代码块内部再次声明同名char answer,内层变量会覆盖外层变量的可见性,导致你在内层赋值的是新创建的临时变量,外层的answer始终没有被赋值。 - 未初始化使用:
while条件判断时读取的是外层从未赋值的answer,因此触发未初始化报错。
修复方案
删除do代码块内answer前的char声明关键字,直接复用外层已声明的变量即可,修改后完整代码如下:
#include <cs50.h> #include <stdio.h> int main(void) { char answer; do { answer = get_char("are you okay Y/N "); if (answer == 'y' || answer == 'Y') { printf("you are okay"); } else if (answer == 'n' || answer == 'N') { printf("you are not okay "); } } while (answer != 'y' && answer != 'Y' && answer != 'n' && answer != 'N'); }
内容的提问来源于stack exchange,提问作者Fkhadim123
相关产品推荐
相关产品推荐

