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)使得記憶更容易,並避免這些類型迷惑。 –