Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Keluar dari Gelung dari Dalam Pernyataan Suis dalam C : Menggunakan `goto` atau Bendera?

Bagaimana untuk Keluar dari Gelung dari Dalam Pernyataan Suis dalam C : Menggunakan `goto` atau Bendera?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 02:41:30691semak imbas

How to Exit a Loop from Within a Switch Statement in C  : Using `goto` or a Flag?

Pendekatan Alternatif untuk Keluar dari Gelung dari Dalam Suis

Dalam senario tertentu, seseorang mungkin menghadapi keperluan untuk menamatkan gelung penutup dari dalam pernyataan suis. Walaupun menggunakan bendera ialah pendekatan biasa, C menyediakan penyelesaian alternatif: menggunakan pernyataan goto.

Dilema:

Pertimbangkan coretan kod berikut:

<code class="cpp">while(true) {
    switch(msg->state) {
    case MSGTYPE: // ...
        break;
    // ... more stuff ...
    case DONE:
        // **HERE, I want to break out of the loop itself**
    }
}</code>

Matlamatnya adalah untuk keluar dari gelung serta-merta apabila keadaan msg->sama dengan DONE.

Menggunakan goto:

C membenarkan penggunaan pernyataan goto untuk melompat secara eksplisit ke lokasi tertentu dalam kod. Ini boleh dimanfaatkan untuk mencapai gelagat yang diingini:

<code class="cpp">while ( ... ) {
    switch( ... ) {
     case ...:
         goto exit_loop;  // Jump to this location when msg->state is DONE

   }
}

exit_loop: ;  // Label for jump target</code>

Dalam kod yang diubah suai ini, apabila msg->state sama dengan DONE, pernyataan goto mengarahkan aliran pelaksanaan ke label exit_loop. Ini seterusnya keluar dari kedua-dua suis dan gelung penutup.

Nota: Adalah penting untuk menggunakan label (:) untuk mengenal pasti sasaran pernyataan goto. Menggunakan goto secara sembarangan boleh menyebabkan kod spageti dan isu kebolehselenggaraan.

Atas ialah kandungan terperinci Bagaimana untuk Keluar dari Gelung dari Dalam Pernyataan Suis dalam C : Menggunakan `goto` atau Bendera?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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