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();

これらの 2 つのケースに大きな違いは見られないかもしれませんが、それは単純だからです。ラベルと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 に答える