[H8-ML(6025)] Re: H8 32ビット変数の使い方について
From: hamayan <hamayan@xxxxxxxxxxxxxxxx>
Date: 2006年08月04日(金)12時42分41秒
hamayan です。

maruha> >   sprintf( buffer, "UL=0x%08lx UI=0x%08x\n", uLData, uIData );
maruha> > 特にsprintf文の変換元の型指定→lx
maruha> 
maruha> 桁だけの指定だけで、変換元の型指定を行っていませんでした。。

うまく動いたでしょうか?。
ソースコードを見て引数の型が判断できるのは人間とコンパイラだけ
で、sprintfと言ったライブラリ関数では、引数の型を判断するのに唯
一の方法は、書式の解釈だけです。いくらキャストしても、関数には伝
わりません。

%08xを解釈すると、「符号無しint型の引数を、16進表記で8文字幅の右詰
で記述し、左の余った所は0で埋める。」となるので、0000ffffを返した
のです。

いずれにせよシミュレータで確認すれば、
  uLData = (Data[3] << 24) + (Data[2] << 16) + (Data[1] << 8) + Data[0];
までは正しく計算できている事が判ったはずなので、問題はその先にある!
と絞れたと思います。
スレッド概略
[6014(R)](起点)
 └[6024(U)]
   └[表示中]
     ├[6026(1)]
     └[6027(2)]


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


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