在这个线程中,我们将查看在 C 或 C + + 中良好使用 goto
的例子。它的灵感来自 一个答案,人们投票,因为他们认为我是在开玩笑。
摘要(标签由原来的更改为使意图更加清晰) :
infinite_loop:
// code goes here
goto infinite_loop;
为什么它比其他选择更好:
goto
是
语言结构,从而导致
无条件分行,备选方案
取决于使用的结构
支持有条件分支,
堕落的永远真实
情况。break
的中间代码
(尽管仍然有可能
无原则的黑客来模拟
continue
及早期 goto
)。规则:
看看我们能不能像成年人一样谈谈。
剪辑
这个问题现在看来已经完成了,产生了一些高质量的答案,感谢大家,
特别是那些认真对待我的小循环例子的人。大多数怀疑论者都很担心
因为没有块作用域。正如@quinmars 在注释中指出的,您总是可以在
我注意到 for(;;)
和 while(true)
没有给大括号
无论如何,我不会再浪费了
你的脑力在这件小事上-我可以忍受无害的和惯用的 for(;;)
和 while(true)
(如果我想保住我的工作就好了)。
考虑到其他的反应,我看到很多人认为 goto
是你一直认为的东西
当然你可以通过引入一个循环来避免 goto
,
一个额外的标志,一堆嵌套的 if
,或者其他什么,但是为什么不考虑一下 goto
是否
也许是这项工作的最佳工具?换句话说,为了避免使用内置的语言特性达到预期的目的,人们准备忍受多大程度的丑陋?我认为
即使添加一个标志也是一个很高的代价。我喜欢我的变量在
问题或解决方案领域。“只是为了避免一个 goto
”不削减它。
我将接受第一个答案,它给出了 C 模式,用于分支到一个清理块。在我看来,这是所有公布的答案中 goto
的最强有力的证据
如果你用仇恨者为了避免这种情况而不得不经历的扭曲来衡量的话。