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!