0

我对 C++ 很陌生。

如何将代码“重定向”到某个位置?

基本上,我应该在这里放什么而不是注释行:

if ( N>1 ) {
  // What should be here to make the code start from the beginning? 
}
else {
  // What should be here to make the code start from certain point?
}

我知道 C++ 不是脚本语言,但如果代码是作为脚本编写的,我该如何重定向它?

谢谢

4

3 回答 3

3

一个goto命令会做你想做的事,但在礼貌的圈子里它通常不受欢迎:-)

它有它的位置,但学习结构化编程技术可能会更好,因为过度使用往往goto会导致我们所说的意大利面条代码,难以理解、遵循和调试。

如果您的任务是对听起来可能已经写得很糟糕的代码进行最小的更改,那么可能goto是最好的解决方案:

try_again:
n = try_something();
if (n > 1)
    goto try_again;

使用结构化编程,您将拥有以下内容:

n = try_something();
while (n > 1)
    n = try_something();

你可能看不出这两种情况有什么区别,但那是因为它很简单。如果你的标签和goto语句被分开,或者有 42 个不同的标签,你会乞求结构化版本。

于 2013-10-07T02:04:39.463 回答
2

使用函数、循环等来控制应用程序的“流程”。将代码视为可重用的部分,任何将被重用的东西都应该放在函数中或循环使用。

这是一个例子:

void main()
{
    int i = 0;

    SayHello();       

    if (i < 1)
    {
         SayHello();
         i++;
    }
    else
    {
         SayGoodbye();
    }
}

void SayHello()
{
    cout << "Hello" << endl;
}

void SayGoodbye()
{
    cout << "Goodbye" << endl;
}
于 2013-10-07T02:08:21.863 回答
0

我不完全确定您所说的“重定向”是什么意思,但请考虑以下几点:

if (N > 1) {
   speak();
} else {
   do_something_else();
}

正如paxdiablo 已经指出的那样,该goto方法不是好的做法。最好使用执行特定操作的函数,这样调试更容易,并且有人实际上可以跟踪您的代码正在做什么(或者至少应该做什么)。

于 2013-10-07T02:17:04.640 回答