0

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

例子:

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

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

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

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

我精通 php/C/POSIX/java,但在这里我不明白这一点。

4

1 回答 1

1

每个[都必须与另一个匹配]

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

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

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

于 2014-10-17T06:10:19.087 回答