ひぐちです。お世話になります。 ANSIか実装依存か、調べれば判るとは思いますが・・・すいません。 通常曖昧な記述を避けて y=-(double)x; と書くべきかと思います。 ボーランドのコンパイラだったら -w でコンパイルすれば"ambiguous"だと 言ってくれないかな。 でわでわ。 ----- Original Message ----- From: "Katsushi MATSUBAYASHI" <matsu@xxxxxxxxxxxxxx> To: <h8@xxxxxxx> Sent: Monday, February 25, 2002 12:28 PM Subject: [H8-ML(1610)] unsigned->double型変換 > 松林です。こんにちは。 > > 厳密には,H8の質問にならないかもしれませんが, > 失礼ついでに,お願いいたします。 > > 下のプログラムを秋月のCコンパイラ/H8マザーキットで, > 実行するとyが正の数になってしまい,一晩悩みました。 > (もちろん,printf関数は,液晶表示関数に変えています。) > windows上のターボcも同様でした。 > これは,ANCIの仕様でしょうか。 > y=-1.0*x; > とすれば,yも負になってくれるんですが・・・。 > > #include <stdio.h> > > main() > { > unsigned x=10; > double y; > int z; > y=-x; > z=-x; > printf("%lf\n",y); > printf("%d",z); > } > /*実行結果 > 4294967286.000000 > -10 > */ > > // Katsushi MATSUBAYASHI matsu@xxxxxxxxxxxxxx > // Associate Professor, Tokyo National College of Technology