Rumah >pembangunan bahagian belakang >C++ >Bolehkah C 17 Mengisytiharkan Pembolehubah Di Dalam Keadaan \'jika\'?

Bolehkah C 17 Mengisytiharkan Pembolehubah Di Dalam Keadaan \'jika\'?

Linda Hamilton
Linda Hamiltonasal
2024-12-02 09:15:13802semak imbas

Can C  17 Declare Variables Inside an 'if' Condition?

Pengisytiharan Pembolehubah C dalam Ungkapan 'if': Diselesaikan dalam C 17

Dalam C , mengisytiharkan pembolehubah dalam ungkapan keadaan pernyataan 'if' telah lama wujud had. Setakat C 17, sekatan ini telah ditarik balik.

Sebelum ini, pembolehubah yang diisytiharkan dalam keadaan 'jika' telah diskop kepada pencawang pernyataan 'jika'. Melampirkan pengisytiharan dalam kurungan adalah dilarang, dan hanya satu pengisytiharan sahaja dibenarkan bagi setiap syarat. Had ini menyusahkan dalam kes di mana permulaan pembolehubah dalam keadaan diperlukan.

Pertimbangkan coretan kod:

bool a = false, b = true;

if (bool x = a || b) // Cannot declare x within the condition
{

}

Untuk memulakan x kepada palsu dalam skop 'jika', kurungan diperlukan disebabkan keutamaan pengendali. Walau bagaimanapun, kurungan tidak dibenarkan, memerlukan x diisytiharkan di luar 'jika'. Ini membocorkan pengisytiharan kepada skop yang lebih luas.

Dalam C 17, kekangan ini telah dilonggarkan. Kod berikut kini sah:

if (int a = Func1(), b = Func2(); a && b)
{
    // Do stuff with a and b.
}

Perhatikan penggunaan ";" untuk memisahkan pengisytiharan daripada syarat. Ini membolehkan berbilang pengisytiharan dan penggunaan kurungan jika sesuai.

Oleh itu, perkara yang sebelum ini tidak akur kini boleh dilakukan dengan pengenalan C 17.

Atas ialah kandungan terperinci Bolehkah C 17 Mengisytiharkan Pembolehubah Di Dalam Keadaan \'jika\'?. 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