-1

为什么以下代码仅适用于 for 循环的第一次迭代?

typedef struct {
    char name[3];
    int gold, silver, bronze, total;
} tally_t;

int main(void)
{
    tally_t country[COUNTRIES_COMPETING];
    int j;
    j=0;
    country[j].gold=0;
    for (j=0; j<5; j++) {
        country[j].gold++;
    }
    return 0;
}
4

2 回答 2

6

这是因为您只初始化了数组第一个gold元素的成员。其余所有都未初始化并且具有未定义的值。更改未定义的值是未定义的行为。

于 2013-09-26T08:20:28.150 回答
0

您刚刚初始化了结构数组的第一个元素。

为了解决您的问题,您可以这样做:

int main(void)
{
    tally_t country[COUNTRIES_COMPETING];
    int j;

    // Init Step
    for (j = 0; j < 5; j++)
        country[j].gold = 0:

    for (j=0; j<5; j++)
        country[j].gold++;
    return 0;
}
于 2013-09-26T08:33:48.133 回答