我目前正在用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);“;,输出结果是"Accepted 1”。即使在这段代码中,j不可能等于1。我怀疑我引用了错误的数据类型或类似的数据类型。有谁有什么想法吗?
谢谢!
发布于 2013-07-03 05:40:18
你想要的
if (j == 1) // j == 1 evaluates to true if j is 1, evaluates to false otherwise使用:
if (j = 1)集合j等于1,本质上是
if (1) // always truehttps://stackoverflow.com/questions/17435437
复制相似问题