2

我是 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'],对我没有帮助?

提前致谢。

4

1 回答 1

7

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

array[9]

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

array['9']

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

于 2012-04-05T05:43:48.473 回答