0
所以我對C很瞭解,所以如果這是一個明顯的問題,請原諒我。我不知道爲什麼在selectedNode
函數中第一次返回正確的值,而其他所有函數都返回0。它通過length屬性從struct中被訪問。這是我的代碼。爲什麼C函數在第一次循環迭代後返回結構屬性返回0?
#include <stdio.h>
#include <stdlib.h>
typedef struct { int x; int y; } VECTOR;
typedef struct { VECTOR nodes[8]; int length; } NODE_LIST;
VECTOR Deltas[8] = {{-2, 1}, {-2,-1}, {-1,-2}, { 1,-2},
{ 2,-1}, { 2, 1}, { 1, 2}, {-1, 2}};
NODE_LIST NodeSuccessors(VECTOR node)
{
NODE_LIST successors;
int count = 0;
for (int i; i < 8; i++)
{
VECTOR N = {node.x + Deltas[i].x, node.y + Deltas[i].y};
if ((N.x < 8) && (N.y < 8) && (N.x >= 0) && (N.y >= 0))
{
successors.nodes[count] = N;
count++;
}
}
successors.length = count;
return successors;
}
int SelectedNode(NODE_LIST nodelist)
{
int bestNode = 8; // the most a node could have.
int len = 0;
for (int n = 0; n < nodelist.length; n++)
{
len = NodeSuccessors(nodelist.nodes[n]).length;
printf("%d, ", len);
if (len < bestNode)
{
bestNode = len;
}
}
return bestNode;
}
int main()
{
VECTOR node = {4,4};
NODE_LIST nNodes = NodeSuccessors(node);
int best = SelectedNode(nNodes);
printf("\nresult: %d\n", best);
}
電流產生的輸出是:
8, 0, 0, 0, 0, 0, 0, 0, result: 0
乾杯。
實施例本'對(INT I; I <8;我++)' - >'的for(int i = 0; I <8; i ++在)' –
調高編譯器警告級別,它應該發出關於使用未初始化變量的警告。 – Blastfurnace
ahhh歡呼是的,做到了。好像這不是作爲警告。 –