ページ 11

龍神録プログラミングの館の3章でわからない所があるので教えてください。

Posted: 2012年8月01日(水) 17:12
by 田中清十郎
初めまして田中清十郎と申します。
龍神録プログラミングの館の3章でわからない箇所が2点あるので教えてください。

1点目はstate key配列の型が2章のintから3章のunsigned intに変更されている点です。
int型でも良いと思うのですが、なぜunsigned int型なのでしょうか。

2点目はCheckStateKey関数の引数がunsigned char型になっている点です。
Dxライブラリの関数リファレンスを見る限り、KEY_INPUT_ESCAPEなどはint型です。
なのでCheckStateKey関数の引数はint型だと思うのですが、なぜunsigned charとしているのでしょうか。

以上2点、お暇な時で結構ですので回答いただければ幸いです。

Re: 龍神録プログラミングの館の3章でわからない所があるので教えてください。

Posted: 2012年8月01日(水) 18:08
by Takumi
http://www1.cts.ne.jp/~clab/hsample/Primary/Io8.html
このページを見るとint型よりunsigned int型の方が正の数の保存できる範囲が大きいからです。
やはり押された時間が保存できる範囲は大きい方がいいでしょう。

あとこのページを見るとchar型の保存できる範囲が0 ~ 255となっていますが本当は-127~127です。
そしてunsigned char型が0 ~ 255です。
するとちょうど監視するキーの数と同じになります。
int型でも問題ないと思いますが必要以上に計算精度の高い型はパフォーマンスに悪いのでunsigned char型となっています。

あと独学で全て学んでいるので信用はしないでください・・・

Re: 龍神録プログラミングの館の3章でわからない所があるので教えてください。

Posted: 2012年8月01日(水) 19:06
by みけCAT
Takumi さんが書きました:あとこのページを見るとchar型の保存できる範囲が0 ~ 255となっていますが本当は-127~127です。
そしてunsigned char型が0 ~ 255です。
char型が符号付きかどうかは環境依存です。
LSI C-86 試食版では符号なし(0~255まで保存できるはず)でした。
gcc 4.3.4では符号付きです。
また、gcc 4.3.4のchar型で保存できる範囲は-128~127のようです。
http://ideone.com/FMqo2

Re: 龍神録プログラミングの館の3章でわからない所があるので教えてください。

Posted: 2012年8月02日(木) 13:32
by 田中清十郎
お二人ともありがとうございました。大変参考になりました。