実行すると if文 に矛盾
#include <stdio.h>
#include <math.h>
int main(void) {
/* */ double c, l, m, n, w=1, x[4]={1,2,3,4}, y[4]={1,2,3,4};
/* */ int j, k, u, v;
/* */ for(j=0; j<3; j++){
/* */ for(k=j+1; k<4; k++){
/* */ l = sqrt( pow(x[j]-x[k], 2) + pow(y[j]-y[k], 2) );
/* */ m = sqrt( pow(x[j], 2) + pow(y[j], 2) );
/* */ n = sqrt( pow(x[k], 2) + pow(y[k], 2) );
/* */ c = ( pow(m, 2) + pow(n, 2) - pow(l, 2) ) / (2*m*n);
/*☆ */ /* if(c=w) ; */
/*※ */ if(c<=w){
/* */ w = c;
/* */ u = j;
/* */ v = k;
/*● */ } else if(c>w){
/* */ if(c=w)
/* */ printf("no way\n");
/* */ }
/* */ }
/* */ }
/* */ printf("[ P%d P%d ]\n", u, v);
/* */ return(0);
}
--------------------------------------------------------------------------------
上記プログラムなのですが、Visual C++ でこれを実行すると、
------------------------------
no way
no way
no way
no way
[ P0 P2 ]
Press any key to continue
------------------------------
と出力されてしまいました。
☆行のif文のコメントを外して直前で c=w を評価すると、※の部分が正常に処理されました。
なぜこのような矛盾が生じているのでしょうか?
何かご意見いただければ幸いです。
※今回 Visual C++ でしか実行できるものがなかったため、他では確認できておりません。恐縮です。
※この投稿の文字量の制限のため、プログラムの解説は割愛しました;
※補足などでお伝えできればよいのですが…。