我是 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/