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

C语言统计数字代码中++ndigit[c-'0']数组下标表达式疑问

++ndigit[c - '0'] 运行原理解析
  • C语言中字符类型本质存储的是对应的ASCII编码值,标准ASCII表中数字字符'0'到'9'是连续排列的,'0'的编码值为十进制48,'1'为49,依次递增到'9'的编码值57。
  • 进入这个运算前,if (c >= '0' && c <= '9')的判断已经保证当前读取到的变量c一定是数字字符,所以c - '0'的运算结果一定是0到9之间的整数:比如c为'5'时,'5' - '0'等价于53-48=5,正好得到数字本身的数值。
  • 数组ndigit[10]的10个元素分别对应数字0~9的出现次数,初始化时所有元素都被赋值为0。我们用c-'0'得到的结果作为数组下标,正好可以定位到当前数字对应的计数单元。
  • 最后的前置自增++会把对应下标的计数单元值加1,完成当前数字的次数统计。

补充:你贴的代码里有几处笔误,直接运行会报错,可以修改后再测试:

  1. while条件里的I= EOF应为!= EOF
  2. if判断里的大写C要改成小写变量名c
  3. else if的条件判断里的分号要改成逻辑或运算符||,即else if (c ==' ' || c == '\n' || c =='\t')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:45:04