-5

Goto を使用して他の関数にジャンプできますか? 例えば

void x(){
 printf("hello");
}

void y(){
 printf("hi");
}

int main(){     /*assume that all var are declared */

 scanf("%d",&input);
  if(input == 1) goto y();
  else(input == 2) goto x();
}
4

4 に答える 4

0

あなたの質問から、あなたは C を学んでいるようで、プログラミング全般の初心者です。その場合は、良い本に従うことを強くお勧めします。C は、初心者が単に実行して学習するのに適した言語ではありません。これには落とし穴がたくさんあり、コンマやセミコロンを間違った場所に追加してしまうと、プログラムが完全に機能 (つまり、コンパイルと実行) しても、期待したことは何も行われません! C は、たとえば Java や Python のように手を握ることはできません。

あなたの質問に関しては、このリファレンスが役立つ可能性があります。

もう 1 つのアドバイス: で遊んでgotoその構文とセマンティクスを学び、専門の C プログラマーになるまで「実際のコード」で使用しないようにしてください。ほとんどすべてのプログラムは、s なしで作成できますgoto。熟練したプログラマーがgotos に頼る理由は、おそらく次のいずれかです。

  • 何らかの最適化トリックを実装している、または
  • goto手元のアルゴリズムは非常にトリッキーであるため、コードが読みやすくなるまれなケースの 1 つに該当します。
于 2013-08-23T19:06:32.650 に答える
0

ほとんどの場合、goto は悪い考えであり、通常は避けることができます。この例では、次のように実行できます。

if (input == 1)
{
 y();
}
else
{
 x();
}
于 2013-08-23T18:07:41.297 に答える
-2

goto を使用しないでください。醜く、古く、物事を不必要に難読化します。

int main() {     /*assume that all var are declared */

    scanf("%d",&input);
    if(input == 1) {
        y();
    } else if (input == 2) {
        x();
    }
}  
于 2013-08-23T18:10:24.983 に答える