つい最近勉強を始めた者です。
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if (key & PAD_INPUT_UP) y -= 4;
というプログラムですが、2行目がなぜ二つの条件が必要なのか分かりません。
上が押されているかどうかを見るだけならPAD_INPUT_UPが真であるだけで良さそうなのに
()内をPAD_INPUT_UPのみにすると何も押さなくても常に条件が成立した事になってしまいます。
逆に()内をkeyのみにすると何のキーを押しても条件成立になるようですが…。
No.1ベストアンサー
- 回答日時:
> 2行目がなぜ二つの条件が必要なのか分かりません。
二つの条件のANDをみているのではありません、ビット演算を行っているのです。
keyは、GetJoypadInputState(DX_INPUT_KEY_PAD1)の戻り値(何かが押されていれば0以外のコードを返す)、PAD_INPUT_UPは、↑キーを表す定数(ヘッダファイルか何かで定義されているはず)です。
つまり、GetJoypadInputState(DX_INPUT_KEY_PAD1)の戻り値と定数(PAD_INPUT_UP)でANDのビット演算を行った結果が0でなければ(= ↑キーが押されていれば)y -= 4;を実行するのです。
> PAD_INPUT_UPのみにすると何も押さなくても常に条件が成立した事になってしまいます。
PAD_INPUT_UPは、0以外の値が定義されているので、常に条件が成立します。
> keyのみにすると何のキーを押しても条件成立になるようですが…。
何かのキーを押すと、GetJoypadInputState(DX_INPUT_KEY_PAD1)から0以外の値が返るので、常に条件が成立します。
http://dxlib.o.oo7.jp/function/dxfunc_input.html …
丁寧に回答いただきありがとうございます。
&についての誤解があったようです。ビット演算をしているのですね。
条件を変えた時の挙動についても一つ一つ説明していただき、大変よく分かりました。
お礼が遅くなり申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Java Java 南京錠 2 2023/02/04 11:46
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- マウス・キーボード onまたは off で一回だけ動作するそんな都合のよいトグルスイッチなんてないですか 1 2022/08/12 16:04
- フリーソフト 1秒毎にキーの←を押すソフト 1 2023/03/06 04:27
- マウス・キーボード パソコンのゲームで押しずらいキーがあったのでchange keyというキーの割り当てを変える ソフト 1 2023/03/17 09:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MATLABにおける行の挿入方法
-
パイソンのプログラミングにつ...
-
c言語
-
繰り返し1行~28行までを順順に...
-
H8マイコン C言語でのプロ...
-
五目並べ
-
Excel・Word リサーチ機能を無...
-
配列数式の解除
-
メッセージボックスのOKボタ...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
文字列内で括弧を使うには
-
UserForm1.Showでエラーになり...
-
一つのTeratermのマクロで複数...
-
教えて下さい
-
Excel VABについて 下記記述が...
-
EXCELのVBAでRange("A1:C4")を...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
繰り返し1行~28行までを順順に...
-
c言語
-
MATLABにおける行の挿入方法
-
H8マイコン C言語でのプロ...
-
C言語で余りがマイナスになる場合
-
!(否定)演算子について
-
フォートランで行列の計算
-
パイソンのプログラミングにつ...
-
cのプログラミングで虚数を含...
-
ダイナミックプログラミング
-
StandardMLで整数リストの奇数...
-
一般次元の逆行列を求めるプロ...
-
MATLABの参考書
-
Pythonの公式リファレンスガイド
-
MATLABからCへ
-
MATLABのfor文の使い方について
-
OPENCVを使ったエピポーラ幾何...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
配列数式の解除
おすすめ情報