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

如何比较字符数组中扩展ASCII字符?判断ASCII219字符遇类型报错求助

解决字符数组中判断ASCII 219(█)的问题

问题核心在于默认char类型的符号属性:常规环境下char是有符号类型,取值范围为-128到127,而ASCII 219超出了这个范围,存入char数组时会被转换为负数,和正数219比较自然永远不相等。

给你几个直接可行的解决办法:

  • 把数组类型改为unsigned char,其取值范围是0-255,能完整容纳扩展ASCII值,直接用原判断逻辑即可:

    unsigned char gameboard[ROWS][COLS];
    // 赋值时可直接用219或(unsigned char)219
    if(gameboard[playery][playerx] == 219) {
        // 你的业务逻辑
    }
    
  • 若不想修改数组类型,直接用219对应的有符号char值比较:219转成有符号char为-37(计算方式:256-219=37,取负),代码调整为:

    if(gameboard[playery][playerx] == -37) {
        // 你的业务逻辑
    }
    
  • 赋值和判断时统一强制类型转换,确保两边类型匹配:

    // 赋值
    gameboard[playery][playerx] = (unsigned char)219;
    // 判断
    if((unsigned char)gameboard[playery][playerx] == 219) {
        // 你的业务逻辑
    }
    

注意:直接使用█文本字符需谨慎——该字符在UTF-8编码中是多字节的,单字节char数组无法完整存储,会被拆分为多个字符,因此用ASCII值的方式更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:23:12