【发布时间】:2016-02-09 22:26:25
【问题描述】:
这是我的 C++ 代码,用于循环并在最后打印出结构的属性。
#include <iostream>
typedef struct
{
int red;
int green;
int blue;
} card_t;
int main()
{
int colorPalette[][3] =
{
{ 168, 0, 32 },
{ 228, 92, 16 },
{ 248, 216, 120 },
{ 88, 216, 84 },
{ 0, 120, 248 },
{ 104, 68, 252 },
{ 216, 0, 204 },
{ 248, 120, 248 }
};
int colorCount = (sizeof(colorPalette) / sizeof(*colorPalette));
int deckSize = colorCount * 2;
card_t deck[deckSize];
for (int i = 0; i < 2; i++)
{
for (int x = 0; x < colorCount; x++)
{
int red = colorPalette[x][0];
int green = colorPalette[x][1];
int blue = colorPalette[x][2];
card_t card = { red, green, blue };
deck[i + 1] = card;
std::cout << card.red << ' ' << card.green << ' ' << card.blue <<
std::endl;
std::cout << "======" << std::endl;
}
}
for (int i = 0; i < deckSize; i++)
{
std::cout << deck[i].red << ' ' << deck[i].green << ' ' << deck[i].blue
<< std::endl;
}
return 0;
}
当我 cout 第一个循环块中的值时,结果很好,但在最后一个,我得到:
-1665734512 32653 -1651136112
248 120 248
248 120 248
0 -1653342144 32653
-1653436608 32653 -1656110705
32653 -1653337504 32653
1116561856 32767 -1653337504
32653 6 0
6 16 6296320
0 0 0
1116562424 32767 1116562408
32767 1 0
1116562096 32767 -1653270346
32653 1 32653
0 0 -1653444720
32653 -1665734512 32653
这是怎么回事?
【问题讨论】:
-
为什么每次通过内部循环都覆盖
deck[i+1]?完成后,它将始终包含来自colorPalette[colorCount-1]的值,那么循环的目的是什么?