我正在编写一些用于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.我怀疑我可能引用了错误的数据类型或类似的东西。有人有什么想法吗?
谢谢!
答案 0 :(得分:1)
你想要
if (j == 1) // j == 1 evaluates to true if j is 1, evaluates to false otherwise
使用:
if (j = 1)
将j设置为1并且基本上是
if (1) // always true