Memahami Kepentingan Penghantaran kepada batal
Penghantaran, dalam pengaturcaraan, melibatkan penukaran nilai satu jenis data kepada yang lain. Casting to void, khususnya, mempunyai tujuan unik yang membezakannya daripada casting ke jenis lain.
Dalam C , casting to void biasanya digunakan untuk menghapuskan amaran pengkompil tentang pembolehubah yang tidak digunakan. Walaupun menghantar kepada jenis lain tidak menyekat amaran ini, menghantar kepada tidak sah tidak. Sebagai contoh, pertimbangkan kod berikut:
int main() { int x; (short)x; // Warning: unused value (void)x; // No warning (int)x; // Warning: unused value }
Menyusun kod ini dengan amaran didayakan (-Wall -Wextra) mendedahkan bahawa hanya menghantar ke pendek dan int mencetuskan amaran.
Perbezaan amaran ini tingkah laku berpunca daripada fakta bahawa kekosongan adalah jenis khas dalam C. Tidak seperti jenis lain, kekosongan mewakili ketiadaan nilai. Seperti yang dinyatakan dalam Standard dalam §5.2.9/4, "Sebarang ungkapan boleh ditukar secara eksplisit kepada jenis 'cv void.' Nilai ungkapan dibuang."
Oleh itu, penghantaran ke batal dengan berkesan memberitahu pengkompil untuk membuang nilai ungkapan itu. Inilah sebabnya mengapa ia tidak menjejaskan nilai pembolehubah dan tidak menghasilkan amaran. Sebaliknya, menghantar kepada jenis lain mencipta nilai baharu jenis sasaran, yang mungkin atau mungkin tidak digunakan dan berpotensi mencetuskan amaran.
Jadi, sementara kedua-dua pilihan yang anda cadangkan adalah separa betul (menghantar ke batal menekan amaran, manakala menghantar kepada jenis lain tidak), perbezaan utama terletak pada sifat kekosongan sebagai jenis yang mewakili ketiadaan nilai. Ciri unik ini membolehkan penghantaran terbatal untuk membuang nilai ekspresi dengan berkesan dan menyekat amaran pengkompil.
Atas ialah kandungan terperinci Mengapakah Penghantaran ke `kosongkan` Menindas Amaran Pembolehubah Tidak Digunakan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!