[H8-ML(6028)] Re: [H8-ML(6022)] Re:H8 32ビット変数の使い方について
From: pachira <pachira@xxxxxxxxxxxxxxxxx>
Date: 2006年08月04日(金)13時16分38秒
pachira です。
どうもいろいろ気になる発言が飛び交ってますが、

On 2006/08/04, at 12:05, 岡山英一郎 wrote:

>> uLData = (Data[3] << 24) + (Data[2] << 16) + (Data[1] << 8) + Data 
>> [0];
>             ~~~~~~~~~~~~~~
> CPUのアーキテクチャが16ビットとかいう以前の問題ですね。

いえいえ、そういう問題で、int が 16bitだからです。

> charをいきなり24ビット左シフトしているけど、コンパイラが 
> 自動でlongに型変
> 換して演算してくれる期待はできません。

longには変換してくれませんが、int 以下の値を演算するときは  
int に昇格されて演算します。
C言語はそういうお約束だったはず。

> 明示的に型キャストしてトライするとどうでしょうか。

今回は long なり unsigned long なりにすればうまくい 
くはず。

スレッド概略
[6014(R)](起点)
 └[6022(U)]
   └[表示中]
     └[6029(1)]


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


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