我不理解方括号效果

时间:2014-10-15 20:34:57

标签: square-bracket brainfuck

我刚刚开始学习脑力,我只是在你好世界的例子。我有一个问题是方括号用于什么?

示例:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

这是“hello world”节目。我不明白为什么有[]我理解-+但我在某处读到括号括号:

[ (opening square bracket)
while(mem[ptr]) {
] (closing square bracket)
}

但即使我有这些信息,我也不明白为什么会有这个。

我能说流利的php / C / POSIX / java但是我不明白这一点。

1 个答案:

答案 0 :(得分:1)

每个[必须与另一个]

匹配

所以总是成对地想到它们。以下是你如何推理它们的方法。当程序遇到]时,它会检查当前单元格。如果单元格中的数字大于0,程序将返回匹配的[。如果当前单元格中有0,则程序继续。

[和]是一种制作循环的方法。

这是一个简单的例子:+++[-]这个程序首先将当前单元格设置为3然后将其清除(您将经常遇到部件[-],这是用于设置单元格的部分到0,无论其原始值是多少)。然后它遇到第一个[并忽略它(你可以把它想象成一个标记)。然后它执行-,第一个单元格现在变为2.之后它遇到]。当前单元格中有2个,所以由于2大于0,程序会跳回[。它再执行两次,直到单元格中的值变为0.当单元格中有0并且程序再次遇到]时,它会看到当前单元格中有0,所以不要跳到[它让程序继续向右移动(因为这个程序在]之后没有更多的指令,这意味着这个小程序将会结束)