## Adakah Rekursi Tanpa Kesan Sampingan Kelakuan Tidak Ditakrifkan dalam C ?

Linda Hamilton
Lepaskan: 2024-10-26 12:19:02
asal
997 orang telah melayarinya

## Is Recursion Without Side Effects Undefined Behavior in C  ?

Adakah Rekursi Tanpa Kesan Sampingan Kelakuan Tidak Ditakrifkan?

Dalam C 11, gelung tak terhingga tanpa kesan sampingan, seperti berikut, dianggap tidak ditentukan tingkah laku (UB):

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

Tingkah laku tersebut adalah UB disebabkan oleh peruntukan dalam standard ISO C 11 (1.10p24) yang menyatakan:

The implementation may assume that any thread will eventually do one of the following:
 - terminate, 
 - make a call to a library I/O function, 
 - access or modify a volatile object, or 
 - perform a synchronization operation or an atomic operation.
Salin selepas log masuk

Peruntukan ini terpakai kepada kedua-dua contoh gelung dan atur cara rekursif berikut:

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

int main() {
   foo();
}</code>
Salin selepas log masuk

Dalam atur cara rekursif ini, tiada kesan sampingan, tetapi ia juga dianggap UB kerana ia melanggar andaian bahawa mana-mana benang akhirnya akan melaksanakan salah satu tindakan yang disenaraikan dalam 1.10p24.

Perhatikan bahawa walaupun peruntukan ini tidak wujud, rekursi masih boleh menunjukkan gelagat yang tidak ditentukan jika ia melebihi had yang ditentukan pelaksanaan untuk panggilan fungsi rekursif bersarang. Ini selalu berlaku dalam C , tanpa mengira versinya.

Atas ialah kandungan terperinci ## Adakah Rekursi Tanpa Kesan Sampingan Kelakuan Tidak Ditakrifkan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan