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