初の質問なので注意事項のテンプレートに沿って記述していきます
自分は今C言語にてゲームプログラミングをしようとがんばっています。
そこでゲームプログラミングの館で修行しているのですが
ttp://dixq.net/g/14.html
の[ソースを短く書く①]
でのwhile文で
ProcessMessage()
ClearDrawScreen()
GetHitKeyStateAll( Key )
Key[KEY_INPUT_ESCAPE]
をまとめるということをしていて
なぜこの文になるのかこんがらがってしまい先に進めません。
while文自体は
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key ) && !Key[KEY_INPUT_ESCAPE] )
なのですが
!は否定という意味なのでwhile文に照らし合わせると
「4つの内どれかひとつが●●でなかっただったときループ」
という風になると思います。
正確に言えば
「ProcessMessageが0以外でなかったとき、又はClearDrawScreenが0以外でなかったとき、………」
となると思います。
そろそろ分からなくなってきましたよぉ><(汗
「4つの内どれかひとつが0でなかったときループ」
だと4命令的にありえません
「4つの内どれかひとつが0以外でなかったときループ」
で考え方はあっていると思うのですが。。。
上記をシンプルにまとめると…
「4つの内どれかひとつが0でなかったときループから外れる」
と言う考え方なのでしょうか?
そうするとwhile文が捻じ曲がってしまうような…
このwhile文構成でどのように解釈すればいいのでしょうか?
↑この一文が今回の本題です。
どなたか助言お願いします。
while文について
Re:while文について
>while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key ) && !Key[KEY_INPUT_ESCAPE] )
>「ProcessMessageが0以外でなかったとき、又はClearDrawScreenが0以外でなかったとき、………」
「&&」の意味は「または」ではなく、「かつ」です。
参考情報
C言語では「真」は「0以外の値」です
http://www.geocities.jp/ky_webid/c/014.html
ProcessMessage()で記述するとエラー(返却値 -1)のときだけループする、となるので
否定の「!」をつけて正常時(返却値 0)にループする、となります。

>「ProcessMessageが0以外でなかったとき、又はClearDrawScreenが0以外でなかったとき、………」
「&&」の意味は「または」ではなく、「かつ」です。
参考情報
C言語では「真」は「0以外の値」です
http://www.geocities.jp/ky_webid/c/014.html
ProcessMessage()で記述するとエラー(返却値 -1)のときだけループする、となるので
否定の「!」をつけて正常時(返却値 0)にループする、となります。

Re:while文について
(1) && (2) && (3)
は「(1)も(2)も(3)も全部満たした時真」となります。
(1) || (2) || (3)
は「(1)または(2)または(3)のどれかが満たした時真」となります。
!(1) && !(2) && !(3)
は「(1)じゃなく(2)じゃなく(3)でもない時真」となります。
!(1) || !(2) || !(3)
は「(1)じゃないか(2)じゃないか(3)じゃない、どれか一つでも当てはまる時真」となります。
ということで今回の場合
プロセスメッセージ関数が異常ではなく、
クリアスクリーンが異常ではなく、
キー入力状態取得関数が異常ではなく、
「エスケープが押されている」ではない時、
全て満たした時条件式全体は真となるわけです。
おわかりいただけたでしょうか?
は「(1)も(2)も(3)も全部満たした時真」となります。
(1) || (2) || (3)
は「(1)または(2)または(3)のどれかが満たした時真」となります。
!(1) && !(2) && !(3)
は「(1)じゃなく(2)じゃなく(3)でもない時真」となります。
!(1) || !(2) || !(3)
は「(1)じゃないか(2)じゃないか(3)じゃない、どれか一つでも当てはまる時真」となります。
ということで今回の場合
プロセスメッセージ関数が異常ではなく、
クリアスクリーンが異常ではなく、
キー入力状態取得関数が異常ではなく、
「エスケープが押されている」ではない時、
全て満たした時条件式全体は真となるわけです。
おわかりいただけたでしょうか?
Re:while文について
皆さんありがとうございます!!
無事問題(疑問?)を解決することができました^^
0以外が真
ってところがミソでしたね…
又困ったときはよろしくお願いします^^
無事問題(疑問?)を解決することができました^^
0以外が真
ってところがミソでしたね…
又困ったときはよろしくお願いします^^