You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:57:03