1

我只是想知道讨厌goto的声明是否与声明一样强大comefrom?在我看来,他们的能力可能是相同的,但我对此并不完全确定。是否有任何正式证据证明它们同样强大(或不同样强大)?


对于任何从未听说过的人:comefrom有点颠倒goto

    comefrom doom;
    WriteLine("I will never stop executing!");
doom:
4

1 回答 1

5

comefrom严格来说比 更强大goto

每个程序goto都可以机械地转换成一个仅等效的comefrom程序,方法是将每个程序替换goto为相应的comefrom.

反过来是不正确的。这个程序没有 goto-only 等价物:

  doom:

  comefrom doom;
  WriteLine("I will never stop executing!");
  goto doom;

  comefrom doom;
  WriteLine("Guess my time has come!");

该程序以未知次数打印第一个短语,然后打印第二个短语,然后退出。这种不确定性是无法用缺乏comefrom.

于 2014-08-01T21:34:10.280 回答