Pengisytiharan Pembolehubah dalam Ungkapan if dalam C
Dalam C , sintaks untuk pengisytiharan pembolehubah dalam keadaan ungkapan if selalunya terhad. Timbul persoalan sama ada pengehadan sedemikian adalah berasaskan piawai atau khusus pengkompil.
Piawaian C 2003 (6.4.3) membenarkan pengisytiharan berubah-ubah dalam keadaan if, dengan skop meluas kepada pencawang terkawal. Walau bagaimanapun, ia tidak secara eksplisit melarang kurungan di sekeliling pengisytiharan atau berbilang pengisytiharan dalam syarat tersebut.
Versi C yang lebih awal berkelakuan tidak konsisten berkenaan kurungan dan berbilang pengisytiharan. Dalam contoh kod yang disediakan:
Penghadan ini menyusahkan untuk senario di mana hanya satu pengisytiharan diperlukan dalam syarat tersebut.
C 17 Solution
C 17 memperkenalkan penyelesaian untuk ini masalah:
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
Sintaks ini menggunakan koma bertitik (;) untuk memisahkan pengisytiharan daripada syarat. Ia membenarkan berbilang pengisytiharan berubah dalam satu syarat, menghapuskan kesulitan sebelumnya.
Atas ialah kandungan terperinci Bolehkah Ungkapan `if` C Mengendalikan Pengisytiharan Pembolehubah Secara Konsisten Merentas Piawaian dan Penyusun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!