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

Mary-Kate Olsen
Lepaskan: 2024-10-27 02:41:30
asal
690 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!