while文の条件式の順番について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
補給タンク
記事: 10
登録日時: 8年前

while文の条件式の順番について

#1

投稿記事 by 補給タンク » 8年前

こんばんは。
現在ゲームプログラミングの館にて勉強中なのですが、
ここのページ(http://dixq.net/g/01_08.html)の部分でわからない部分があります。

というのも、ページ内のwhile文の中のプログラムを条件式の中にまとめて書き込む(短縮する)ところなのですが、
条件式の中身を以下のように書き込んだところ、画像が表示されず真っ黒のままになりました。

int x=0;
  int h; // データハンドル格納用変数
  h = LoadGraph( "画像/キャラクタ01.png" ); // 画像をロード

while( ProcessMessage()==0 && ClearDrawScreen()==0 && ScreenFlip()==0){

DrawGraph(x,100,h,TRUE); //画像描写(SetDrawScreenの設定で裏に描写)
x=x+2;
   }

ちなみにページの通りの順番 while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
とするとちゃんと画像が表示されるのですが、ここの理由がわかりません。
基本的なことで申し訳ないのですが、どなたか教えていただけないでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: while文の条件式の順番について

#2

投稿記事 by みけCAT » 8年前

&&演算子は左辺を実行した後に(その結果が0でなければ)右辺を実行することが保証されており、
ClearDrawScreen()によって真っ黒になった画面をそのままScreenFlip()で表示しているのでそうなりますね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

補給タンク
記事: 10
登録日時: 8年前

Re: while文の条件式の順番について

#3

投稿記事 by 補給タンク » 8年前

みけCAT さんが書きました:&&演算子は左辺を実行した後に(その結果が0でなければ)右辺を実行することが保証されており、
ClearDrawScreen()によって真っ黒になった画面をそのままScreenFlip()で表示しているのでそうなりますね。
なるほど、ちゃんと条件式の中にも実行される順番というものがあったんですね。
つまり、ミスってた部分はClearDrawScreenを先に持ってきてしまっていたためだったんですね。
ここのアドバイスを元に少し章を遡ってまとめる前のプログラムを開き、
順番を入れ替えてみたら理解できました。
解説を頂けてとても助かりました。
ありがとうございます!

返信

“C言語何でも質問掲示板” へ戻る