--------------------------------------------------------------------------
藤原さん、今晩は。小泉@TBCです。
-> 使い方が間違っていた正でもあるのですが、これは、
->
-> unsigned int(fc_3); //型変換
->
-> によって、ここで、ローカル変数である、fc_3 が新たに定義されてしまった
-> からです。
-> この時(自動変数なので)初期値は暗黙のうちに「0」になります。
なるほど!確かにそうですね。これは見落としておりました。
御見事です!道理でエラーにならない訳です。
-> 他の事情もあり、もしも、fc_1, fc_2, fc_3 を test() の中でしか使わな
-> いのであれば、test() の中で定義する方が安全です。
「グローバル(大域)変数は、なるべく少なく」も、振れておく
べきでしたでしょうか…。グローバル変数のミスは、全体に波及し
ますから、要注意です。 > C言語初心者の皆様。
-> > fc_dbg1 = (unsigned int)fc_3; // これが正しい型変換
-> ついでに言えば、この場合明示的な型変換は不要です。
-> fc_dbg1 = fc_3;
-> で、自然な型変換ができます。
今回の場合、誤って生成してしまった fc_3 と、fc_dbg1は同型
ですから型変換は無用ですね。仮に、グローバルのfc_3で有っても、
コンパイラが型変換してくれるかもしれませんね。ただ、ワーニン
グが出てきて、多用すると煩わしくなるかもしれません。
--------------------------------------------------------------------------
テクノブレーンズ(株)小泉 薫
--------------------------------------------------------------------------