ひぐちです。お世話になります。
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