c++ - 使用 n[c -'0' ] 的真正用途是什么?

标签 c++ c arrays

我是 C 的新手,我遇到了这样的代码:

int n[10];
if(c>='0' && c<='9')
++n[c-'0']

if循环中为什么我们必须在0周围使用单引号,它有什么用,为什么我们不能定义0立即作为整数?而在第二行代码++n[c-'0']中,这样使用数组有什么用,从某种意义上说我们需要减去0(再次为什么在这种情况下使用单引号?)来自 c 的数组索引?

如果我喜欢这个n[c-'0'],索引操作的结果(c-'0')会是一个字符还是整数?

鉴于有人可以说我,这种数组的真正用途是什么,有什么缺点?

提前致谢。

最佳答案

在 C 中,'0' 是一个整数,其值将数字零表示为一个字符,而不是值 0,后者将是空字符。其他答案省略了这一点,但重要的是要注意 C 语言要求十进制数字具有连续值,因此如果 c 是数字,则 c-'0' 是该数字的数值,即

'0'-'0' = 0
'1'-'0' = 1
'2'-'0' = 2
.
.
.
'9'-'0' = 9

关于c++ - 使用 n[c -'0' ] 的真正用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403741/

相关文章:

c - 为什么 gcc 不支持将动态库链接到静态二进制文件

c - 为什么 -Wcast-align 不警告在 x86 上从 char* 到 int* 的转换?

c++ - 数组大小 (new[])

c++ - 防止转发为 "too liberal"

c++ - 如何使存储数组的二进制搜索稳定

c - 寻找最小的整数

C 在函数中传递二维数组给我段错误

arrays - 计算排序数组中键出现次数的有效方法

c++ - 读取 vector 二进制文件

即使有种子,C++ <random> 分布也不是随机的