未分类逻辑

来自像素工厂维基百科-mindustry wiki

指令语句结构 自增运算++使值增加1 自减运算--使值减少1 案例1: a = 10 a++ 等价 set a 10 op add a a 1 运行 a = 11 前缀:先加后算;后缀先算后加 前后差异案例前: a = 10 b = 2 * ++a 等价 set a 10 op add a a 1 op mul b a 2 运行 b = 22 a = 11 前后差异案例后: a = 10 b = 2 * a++ 等价 set a 10 op mul b a 2 op add a a 1 运行 b = 20 a = 11 自减运算同理


无符号右移位>>>高位始终补零正数情况与>>同理 案例1高性能有缺陷无法正常识别>>>0: a = -1 c = a >>> 1 等价 set a -1 op and a a 9223372036854775807 op shr c a 1 运行 c = 9223372036854775807 案例2低性能无缺陷正常识别>>>0: a = -1 b = 0 c = a >>> b 等价 set a -1 set b 0 jump 4 lessThan b 1 op and a a 9223372036854775807 op shr c a b 运行 c = -1


逻辑或||任何一个为真输出为真 案例1: a = 1 b = 0 a || b 等价 set a 1 set b 0 op land c a a op land c b b 运行 c = 1 逻辑非!反转输出 案例1: a = 1 c = !a 等价 set a 1 op land a a a op mul c a -1 运行 c = 0 短路操作()&&()判定到false打断判定并输出false 案例1: a = 5 b = (a<4)&&(a++<10) 等价 set a 5 op lessThan c a 4 jump 跳出 equal c 0 op lessThan c a 10 op add a a 1 jump 跳出 equal a 0 跳出: end 运行 a = 5 c = 0

三元运算?:基于条件布尔判定赋值对象 格式:variable x = (expression) ? value if true : value if false 案例1: a = 10 b = (--a == 1) ? 20 : 30 等价 set a 10 op sub a a 1 jump true equal a 1 set b 30 jump 跳出 always 0 0 true: set b 20 跳出: end 运行 a = 9 b = 30

while 循环 结构: while( 布尔表达式 ) {

 //循环内容

} 案例1: a = 3 while( a>0 ) {

 a--

} 等价 set a 3 jump 判定循环 always 0 0 进入循环: op sub a a 1 判定循环: jump 进入循环 greaterThan a 0 运行 a = 2 a = 1 a = 0

do…while 循环 结构: do {

      //代码语句

}while(布尔表达式) 案例1: a = 0 do {

 a--

}while(a>0); 等价 set a 0 进入循环: op sub a a 1 jump 进入循环 greaterThan a 0 运行 a = -1