0
我目前正在写为模拟退火一些代码C.我有与此功能的麻烦:意外输出用C
int metrop (E, E1, T)
{
int j;
if (exp((-E-E1)/T) > ran())
j = 2;
printf("Random# %lf\n",ran());
if (E-E1<0)
j = 2;
else
j = 0;
if (j=1)
printf("Accepted %d",j);
if (j=0)
printf("Rejected");
return(j);
}
无论输入为E,E1,并T“if(j = 1)printf(”Accepted%lf“,j);”似乎被执行;给出“接受1”的输出。即使在这个代码中,j不可能等于1.我怀疑我可能引用了错误的数据类型或类似的东西。有人有主意吗?
谢谢!
'如果(j == 1)','没有如果( j = 1)'... –
你有接近0的编程经验,对吧?不要以1缩进,不要认为缩进定义了一个块,不要假设ran()返回两次相同的数字... –
如果(1 == j)使得记忆更容易,并避免这些类型迷惑。 –