ホームページ  >  記事  >  バックエンド開発  >  質問の構造と記事の焦点を念頭に置いて、タイトルのオプションをいくつか示します。 **オプション 1 (直接的かつ集中的):** * **C の再帰は未定義の動作ですか?** **オプション 2 (強調

質問の構造と記事の焦点を念頭に置いて、タイトルのオプションをいくつか示します。 **オプション 1 (直接的かつ集中的):** * **C の再帰は未定義の動作ですか?** **オプション 2 (強調

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 04:50:30882ブラウズ

Here are a few title options, keeping in mind the question structure and the article's focus:

**Option 1 (Direct and focused):**

* **Is Recursion in C   Undefined Behavior?**

**Option 2 (Emphasizes the nuance):**

* **Recursion and Undefined Behavior

C における再帰と未定義動作

副作用のない無限ループは、C 11 標準では明示的に未定義動作 (UB) とみなされます。次のプログラムについて考えてみましょう:

<code class="cpp">int main() {
   while (true) {}
}</code>

このプログラムは意味のあるアクションを実行せず、無期限に実行し続けることができるため、UB です。

再帰も UB ですか?

Now 、再帰プログラムを考えてみましょう:

<code class="cpp">void foo() {
   foo();
}

int main() {
   foo();
}</code>

このプログラムも UB ですか?

標準引用

標準では (1.10p24):

実装では、スレッドが最終的に次のいずれかを実行すると想定できます:

    終了
  • ライブラリ I/O 関数の呼び出し
  • 揮発性オブジェクトにアクセスまたは変更するか、
  • 同期操作またはアトミック操作を実行します。
これは、無限ループと再帰の両方に適用されます。

これにもかかわらず、再帰が入れ子になった再帰関数呼び出しの実装制限を超えると、未定義の動作が発生する可能性があります。これはいつものことです。

以上が質問の構造と記事の焦点を念頭に置いて、タイトルのオプションをいくつか示します。 **オプション 1 (直接的かつ集中的):** * **C の再帰は未定義の動作ですか?** **オプション 2 (強調の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。