変数に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以外はダメなのでしょうか?



