我的代码有问题。此代码的目的是计算邻居数量并根据选项修改数组。
经过多次测试,我观察到该请求:nbVoisins = nb_voisins_M(tab, i, j, n, m);
(谁在计算邻居)以及 if(nbVoisins = b)
之后的线路具有不同的值;我不明白为什么......
int i, j, k, nbVoisins; int b = 0;int s = 0;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
nbVoisins = nb_voisins_M(tab, i, j, n, m);
if(tab[i][j]==1)
{
for(k=0; k<9; k++)
{
if(S[k]==1)
{
s = k+1;
//printf("tab[%d][%d] : nbVoisins = %d et s = %d \n",i,j,nbVoisins,s);
if(nbVoisins == s)
{
tab2[i][j]=1;
printf("= %d",tab2[i][j]);
}
else
{
tab2[i][j]=0;
}
}
}
}
else
{
for(k=0; k<9; k++)
{
if(B[k]==1)
{
b = k+1;
}
if(nbVoisins == b)
{
tab2[i][j]=1;
}
}
}
}
}
最佳答案
如果我有五分钱...
if(nbVoisins == b)
因为,
if(nbVoisins = b)
会将b
的值赋给nbVoisins
,然后检查nbVoisins
是否等于0,否则比较 b
和nbVoisins
是否相等。
像样的编译器应该raise a warning为此,请注意警告 - 应将其列出。
关于C - 具有不同值的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759404/