我是C的初学者,我有这样的代码:
#include <stdio.h>
main()
{
int i;
int ndigit[10] = { [9] = 5 };
printf("%d\n",++ndigit['9']);
}
这会打印如下值:
-1074223011
但是当我将声明改为:
时++ndigit['9'-'0']
正确打印值
6
我想知道为什么需要在我的索引中添加-0
才能使其正常工作?为什么只提及++ndigit['9']
,对我没有帮助?
提前致谢。
答案 0 :(得分:7)
如果要访问数组中的第10个元素,请执行以下操作:
array[9]
如果要访问索引处具有数字9
+ 1的字符常量值的元素,请执行以下操作:
array['9']
由于定义了ASCII(以及C使用的所有其他字符编码方案,请参阅Wiz的注释),表达式'9' - '0'
实际上等于9,这可能会使您在这种情况下感到困惑。