変数に1,2,4,8,16...というような数が和となって入っている時、
その和の元となる数に条件の数が含まれているかを判別できる、
と私は解釈していて、stick命令での変数に限らず使えたはずですが、
dimtype a , vartype("double") , 1 , 3//予定の配列要素数は一次512,二次7
acnt = 0 f a , 15.0 , 5.0//定義命令 repeat length(a) , 0 if (a.cnt.0 == 1.0) { if (int(a.cnt.1) & 1) && (a.cnt.2 > 0.0) {//これを条件式Aとします mes "A動作" a.cnt.2 -- } if (int(a.cnt.1) & 4) && (a.cnt.2 > 0.0) {//これを条件式Bとします mes "B動作" a.cnt.2 -- } } loop #deffunc f array list , double side , double times if (length(list) != acnt) { repeat length(list) , 0 if (a.cnt.0 == 0.0) { a.cnt.0 = 1.0 a.cnt.1 = side a.cnt.2 = times acnt ++ } loop } return
このようなプログラムではBは動作しなかったのです。
記述エラーはでないので論理エラーのようですが…。
本当はB以外にも(int(a.cnt.1) & 4)の部分の4が2と8の式も
ありますが、その二つも同様に動きません。
AもBもここでは省略した式がありますが、それらは
それらだけでならくぐれているので余り関係がないかと。
なぜ&1以外はダメなのでしょうか?