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

C语言骰子游戏积分异常求助:Bonus轮未正确输出200积分

C语言骰子游戏积分显示错误问题排查建议

核心排查方向

  • 核对ROUNDTYPE函数的返回逻辑:确认Bonus分支是否明确返回200,有没有和Double分支的返回值写反,或者条件判断的case匹配错误。
  • 检查函数调用的参数传递:调用ROUNDTYPE时传入的轮次类型是否正确,比如是不是误把Bonus类型传成了Double,或者轮次类型的枚举/宏定义存在冲突。
  • 排查积分变量的赋值覆盖:确认Bonus轮计算出的积分,有没有被后续Double轮的代码意外覆盖,比如全局变量被重复赋值,或者局部变量作用域导致的覆盖问题。

代码具体检查点

  1. 轮次类型定义校验:查看枚举或宏定义代码,比如:

    typedef enum {
        ROUND_NORMAL,
        ROUND_DOUBLE,
        ROUND_BONUS
    } RoundType;
    

    确保ROUND_BONUS的取值没有和ROUND_DOUBLE重复,避免传参时类型判断混乱。

  2. ROUNDTYPE函数分支逻辑检查:重点看函数内的switch-case逻辑,比如:

    int ROUNDTYPE(RoundType type) {
        switch(type) {
            case ROUND_DOUBLE:
                return 100; // 假设Double轮积分是100
            case ROUND_BONUS:
                return 200; // 确认这里没有写成return 100;
            default:
                return 0;
        }
    }
    

    检查是否存在Bonus和Double分支返回值写反,或者case标签对应错误的情况。

  3. 函数调用参数验证:查看调用ROUNDTYPE的代码位置,比如:

    RoundType current_round = ROUND_BONUS;
    int score = ROUNDTYPE(current_round);
    printf("当前积分:%d\n", score);
    

    确认current_round的赋值正确,没有被之前的Double轮逻辑错误修改。

  4. 积分变量生命周期排查:如果积分是全局变量,检查Bonus轮计算后是否被其他代码重新赋值;如果是局部变量,确认作用域是否独立,不会被其他轮次的变量覆盖。

调试技巧

  • 在ROUNDTYPE函数的每个case分支添加调试打印,直接输出当前轮次类型和返回值:
    int ROUNDTYPE(RoundType type) {
        switch(type) {
            case ROUND_DOUBLE:
                printf("[Debug] 当前轮次:Double,返回积分:100\n");
                return 100;
            case ROUND_BONUS:
                printf("[Debug] 当前轮次:Bonus,返回积分:200\n");
                return 200;
            default:
                printf("[Debug] 当前轮次:Normal,返回积分:0\n");
                return 0;
        }
    }
    
    这样能直观确认函数内部的判断逻辑是否符合预期。
  • 在调用ROUNDTYPE之前,打印当前轮次类型的取值,确保传入的参数确实是Bonus类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:15:04