【じゃ】HSP初質P52【自己解決ゥ!】
■ このスレッドは過去ログ倉庫に格納されています
0596デフォルトの名無しさん
2008/02/14(木) 03:16:44結論はあってるけど途中経過がおかしい
C++やHSPでは0が偽、0以外は全て真と扱われる。
比較演算子は比較の結果が真のとき1を返すが、1以外の値でも0でなければ真。
HSPでは&も&&もandも全てビットごとの論理積なので、
keyが2でaが0の時、((Key&2) and (a=0))は、((2) and (1))になって最終的に0になるから偽。
ビットごとの論理積では( 真 & 真 )が必ずしも真にはならない。
バグの原因は数値をそのまま論理値として使ってるせいだから、↓のように一度比較演算子を通すといい
if ((key&1) != 0) and (a=0) : end
if ((key&2) != 0) and (a=0) : end
■ このスレッドは過去ログ倉庫に格納されています