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

C++字典树插入代码中char减'a'赋值给int的取值含义

问题解答

针对你标注的代码行int index = key[i] - 'a';的疑问解答如下:

  1. 关于赋值类型的疑问
    C++中char本质是存储字符ASCII码的整数类型,这行代码不是直接把char值赋值给int,而是先做算术运算再赋值:运算时key[i]和字符常量'a'都会自动提升为int类型,二者的ASCII码差值计算完成后,再赋值给int类型的index变量。
  2. 最终得到的int值规则
    这段代码默认处理的是全小写英文字母的输入:
  • 当key[i]为'a'时,'a' - 'a'的结果为0
  • 当key[i]为'b'时,'b' - 'a'的结果为1
  • 以此类推,'z' - 'a'的结果为25
    刚好匹配字典树节点中长度为26的children数组的下标范围,实现了小写字母到数组下标的映射。

注意:如果输入的key包含大写字母、数字、符号等非小写英文字符,计算出来的index会超出0~25的合法范围,触发数组越界访问,导致不可预测的程序错误。实际使用时需要提前对输入字符做小写转换或者合法性校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:09:03