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

C语言人机对战井字棋:CheckWinner赋值类型不匹配错误解决

解决C语言井字棋中void类型无法赋值给char的问题

你遇到的错误a value of type "void" cannot be assigned to an entity of type "char",核心原因是**CheckWinner函数的声明和实际返回类型不匹配**:

  • 顶部函数原型声明里写的是void CheckWinner();,告诉编译器这个函数不返回任何值;
  • 但函数定义内部却通过return board[i][0];等语句返回了char类型的值,这造成了矛盾,编译器依然按照声明的void类型处理,因此无法将它的返回值赋值给char变量winner。

具体修复步骤:

  1. 修改函数原型声明:
    将顶部的:

    void CheckWinner();
    

    改为:

    char CheckWinner();
    
  2. 修改函数定义的返回类型:
    将CheckWinner函数的开头:

    void CheckWinner()
    

    改为:

    char CheckWinner()
    

修改完成后,编译器就能正确识别CheckWinner返回char类型,赋值给winner变量的操作就不会报错了。

额外优化建议:

你在ComputerMove函数里每次调用都执行srand(time(0));,这会导致随机种子频繁重置,可能生成重复的随机数。建议把srand(time(0));移到main函数的开头,只执行一次即可:

int main()
{
   srand(time(0)); // 移到此处
   char winner = ' ';

   resetBoard();
   // ... 后续代码不变
}

内容的提问来源于stack exchange,提问作者AmineDELTA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:09:54