投稿
しゅーま syu-63657
これでAボタンを押したら画面にA1と表示されるはずなのですがA0のままになってしまいます。しかも!上ボタンを押したら、A1と表示されました。おかしいのがDSか、プログラム、どちらでしょうか?
1そうだね
プレイ済み
返信[1]
親投稿
おかしいのはプログラムですね〜。 ヒントは演算子優先順位です。プチコン3号のスペックで確認出来ます。
2そうだね
プレイ済み
返信[2]
親投稿
これでやってみてください。
0そうだね
プレイ済み
返信[3]
親投稿
say sayer.exe
でんぺんさんの説明の補足 4行目 IF BUTTON() AND 16 == 16 THEN A=A+1 これは下のように解釈されます IF BUTTON() AND (16 == 16) THEN A=A+1 BUTTON() AND 16 を先に評価させたいのなら、そこを括弧でくくると良いです IF (BUTTON() AND 16)==16 THEN A=A+1 こんな感じ たぶん、上のコードだと、十字ボタンの上を押したらAが加算されてくんじゃないでしょうか?
0そうだね
プレイ済み
返信[4]
親投稿
けい kei0baisoku
ふむ……… カッコ付けて (B AND 16)==16 と シンプルに B AND 16 と どちらが分かりやすいか悩みますな………(・ω・)
0そうだね
プレイ済み
返信[5]
親投稿
しゅーま syu-63657
ありがとうございます。
0そうだね
プレイ済み
返信[6]
親投稿
どちらがわかりやすいかはともかくとして僕的には記述が短くなるB AND 16にしてしまいますね〜(^^; sayさんが補足してくれたので問題ないと思いますが演算子の優先順位の問題で、ANDより==の方が優先順位が高いので、 IF BUTTON() AND (16 == 16) THEN A=A+1 となってしまうんですよね。それで(16 == 16)の結果は1なので、実質、 IF BUTTON() AND 1 THEN A=A+1 と同じになって、1は上ボタンなので上を押したら実行する命令に変化してしまったと…。 演算子の優先順位は、一見わかりにくい場合とかは、仮に演算し優先順位的に問題がなくても()をつけた方が見やすく(わかりやすく)なると思います。
0そうだね
プレイ済み
返信[7]
親投稿
say sayer.exe
レス付いて読みなおして初めて気付いた >しかも!上ボタンを押したら、A1と表示されました 推測したことは当たってたけど、単に反復しただけやんかorz
0そうだね
プレイ済み