Rumah > pembangunan bahagian belakang > C++ > Bolehkah Penyata C `if` Mengisytiharkan Pembolehubah Dalam Keadaannya?

Bolehkah Penyata C `if` Mengisytiharkan Pembolehubah Dalam Keadaannya?

Barbara Streisand
Lepaskan: 2024-11-27 19:57:13
asal
632 orang telah melayarinya

Can C   `if` Statements Declare Variables Within Their Conditions?

Pengisytiharan Pembolehubah dalam Ungkapan 'jika' dalam C

Dalam C , keupayaan untuk mengisytiharkan pembolehubah dalam keadaan pernyataan 'jika' telah menjadi subjek batasan. Penyusun, termasuk Visual Studio 2008, sering menghadapi kesukaran dengan pengisytiharan berubah-ubah yang disertakan dalam kurungan atau berbilang pengisytiharan dalam satu syarat.

Menurut Seksyen 6.4.3 piawai C 2003, pembolehubah yang diisytiharkan dalam pernyataan pemilihan mempunyai skop yang menjangkau ke penghujung subpenyataan yang dikawal oleh keadaan. Walau bagaimanapun, piawaian ini tidak secara eksplisit menangani penggunaan kurungan atau berbilang pengisytiharan.

Sebagai contoh, kod berikut gagal untuk disusun:

if((int a = Func1()))
{
    // Fails to compile.
}
Salin selepas log masuk

Walaupun dalam kes di mana hanya satu pengisytiharan diperlukan , had ini boleh mengecewakan. Pertimbangkan perkara berikut:

bool a = false, b = true;

if(bool x = a || b)
{

}
Salin selepas log masuk

Untuk menetapkan 'x' kepada 'palsu' dalam skop 'if'-body, pengisytiharan memerlukan tanda kurungan. Walau bagaimanapun, kurungan tidak dibenarkan dalam keadaan, memaksa pengisytiharan 'x' di luar badan dan membocorkannya ke skop yang lebih luas.

Sehingga C 17, had tersebut telah ditangani. Kod berikut kini boleh dilakukan:

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

Penggunaan ';' bukannya ',' memisahkan pengisytiharan daripada syarat, menyelesaikan had sebelumnya.

Atas ialah kandungan terperinci Bolehkah Penyata C `if` Mengisytiharkan Pembolehubah Dalam Keadaannya?. 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