Kesan Menarik Casting kepada batal
Dalam C , tindakan menyekat amaran tentang pembolehubah yang tidak digunakan menggunakan (kosong)x meluas. Walau bagaimanapun, penghantaran ke batal mempamerkan gelagat pelik jika dibandingkan dengan menghantar kepada jenis lain.
Amaran dan Hantaran Pengkompil
Pertimbangkan coretan kod berikut:
int main() { int x; (short)x; (void)x; (int)x; }
Menyusun kod ini dengan amaran didayakan menggunakan -Wall -Wextra menghasilkan berikut:
warning: statement has no effect [-Wunused-value] (short)x; warning: statement has no effect [-Wunused-value] (int)x;
Ini menunjukkan bahawa hantaran ke batal berkelakuan berbeza daripada hantaran kepada jenis lain.
Penjelasan Kemungkinan
Dua kemungkinan penjelasan untuk ini perbezaan timbul:
Jawapan yang Betul
Penjelasan yang betul ialah yang pertama. Menghantar kepada batal ialah mekanisme penindasan amaran khusus. Standard menyatakan secara eksplisit dalam §5.2.9/4:
Sebarang ungkapan boleh ditukar secara eksplisit kepada menaip "cv void." Nilai ungkapan
dibuang.
Oleh itu, pemutus ke batal tidak mempunyai kesan praktikal ke atas pelaksanaan program. Ia hanya berfungsi untuk menyenyapkan amaran tentang pembolehubah yang mungkin tidak digunakan.
Atas ialah kandungan terperinci Mengapakah Penghantaran ke `batal` dalam C Mencegah Amaran Manakala Pelakon Lain Tidak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!