Rumah >pembangunan bahagian belakang >C++ >Bolehkah Ungkapan `if` C Mengendalikan Pengisytiharan Pembolehubah Secara Konsisten Merentas Piawaian dan Penyusun?

Bolehkah Ungkapan `if` C Mengendalikan Pengisytiharan Pembolehubah Secara Konsisten Merentas Piawaian dan Penyusun?

Barbara Streisand
Barbara Streisandasal
2024-11-27 13:26:12535semak imbas

Can C  's `if` Expression Handle Variable Declarations Consistently Across Standards and Compilers?

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:

  • if(int a = Func1()) mematuhi standard, mengisytiharkan a dalam keadaan if.
  • if((int a = Func1( ))) gagal untuk disusun kerana kurungan.
  • if((int a = Func1()) && (int b = Func2())) memerlukan pengisytiharan x di luar blok if kerana kekurangan kurungan.

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!

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