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

为什么C语言开发的电阻色环计算器中switch case总是触发default分支?

问题根源
  • 你代码里通过运算得到的a/b/c都是整数数值,比如当a计算结果为1时,存储的就是整数1;但你switch的case条件写的是'0'、'1'这类字符字面量,C语言里单引号包裹的字符实际对应的是ASCII编码值,比如'0'对应整数48,'1'对应49,二者数值完全不匹配,所以永远触发default分支。
修复方案
  • 直接把所有case里的单引号去掉,改成匹配整数即可,修改后的switch结构参考:
switch (a)                    //colour band for first digit//
{
    case 0:
    printf("black   ");
    break;
    
    case 1:
    printf("brown   ");
    break;
    
    case 2:
    printf("red   ");
    break;
    
    case 3:
    printf("orange   ");
    break;
    
    case 4:
    printf("yellow   ");
    break;
    
    case 5:
    printf("green   ");
    break;
    
    case 6:
    printf("blue   ");
    break;
    
    case 7:
    printf("violet   ");
    break;
    
    case 8:
    printf("grey   ");
    break;
    
    case 9:
    printf("white   ");
    break;
    
    default:
    printf("unknown value   ");
}
  • 匹配第二位有效数字、公差的另外两个switch分支也按照同样规则修改即可正常匹配。
额外注意事项
  • 你当前的取值逻辑仅支持三位数及以下的整数值电阻,如果你要处理更大阻值、带小数的阻值或者不同精度的色环规则,还需要补充有效数字提取、倍率计算的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:24:04