在这种情况下,数组索引中的字符表示如何工作?

我是C的初学者,我有这样的代码:

#include  main() { int i; int ndigit[10] = { [9] = 5 }; printf("%d\n",++ndigit['9']); } 

这打印的值如下:

 -1074223011 

但是,当我将声明更改为:

 ++ndigit['9'-'0'] 

它正确打印该值

 6 

我想知道为什么需要在我的索引中添加-0才能使其正常工作? 为什么只提到++ndigit['9'] ,对我没有帮助?

提前致谢。

如果要访问数组中的第10个元素,请执行以下操作:

 array[9] 

如果要访问索引处的元素,该元素具有数字9 + 1的字符常量值,则执行以下操作:

 array['9'] 

由于定义了ASCII(以及C使用的所有其他字符编码方案,请参阅Wiz的注释),表达式'9' - '0'实际上等于9,这可能会使您在这种情况下感到困惑。