[H8-ML(1614)] Re: unsigned->double$B7?JQ49(B
From: serow@xxxxxxxxxxxxxxxxxx (TANAKA Yoshitomo)
Date: 2002年02月26日(火)18時11分45秒
In article <200202250328.AA04321@xxxxxxxxxxxxxxxxxxxx>,
Katsushi MATSUBAYASHI  <matsu@xxxxxxxxxxxxxx> wrote:
>
>下のプログラムを秋月のCコンパイラ/H8マザーキットで,
>実行するとyが正の数になってしまい,一晩悩みました。
>(もちろん,printf関数は,液晶表示関数に変えています。)
>windows上のターボcも同様でした。
>これは,ANCIの仕様でしょうか。
>y=-1.0*x;
>とすれば,yも負になってくれるんですが・・・。
>

式の返す型は、式中に現れる型の中でもっとも格の高いものになります
ANSIの規格では
int < unsigned int < long < unsigned long < float < double
の順です。つまり unsiged x; であるから
	-x
の型はunsigedであり、
	-1.0 * x
の型はdoubleです。
ですから、前者はunsignedで表現できる最大の値-10となり
後者は-10となります。
つまり全く正しい結果と言えます。
-- 
----_--__---_-_-_-__--_-__-__---_-_----_--_-_---_---_----
_/     TANAKA Yoshitomo       _//
/  Suginami-ku Tokyo, Japan  _// serow@xxxxxxxxxxxxxxxxxx
スレッド概略
[1610(R)](起点)
 └[表示中]
   └[1615(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]