Maafkan jika pertanyaan ini naif. Pertimbangkan program berikut:
#include <stdio.h>
int main() {
int i = 1;
i = i + 2;
5;
i;
printf("i: %d\n", i);
}
Dalam contoh di atas, pernyataan 5;dan i;tampak benar-benar berlebihan, namun kode mengkompilasi tanpa peringatan atau kesalahan secara default (namun, gcc tidak memberikan warning: statement with no effect [-Wunused-value]peringatan ketika dijalankan dengan -Wall). Mereka tidak memiliki efek pada sisa program, jadi mengapa mereka dianggap pernyataan yang valid di tempat pertama? Apakah kompiler mengabaikannya? Apakah ada manfaat untuk mengizinkan pernyataan seperti itu?
;. Ini akan menyulitkan bahasa untuk menambahkan lebih banyak aturan tentang kapan ekspresi tidak bisa menjadi pernyataan
printf()? Pernyataan itu 5;pada dasarnya mengatakan "melakukan apa pun yang 5tidak (tidak ada) dan mengabaikan hasilnya. Pernyataan Anda printf(...)adalah 'melakukan apa pun yang printf(...)dilakukannya dan mengabaikan hasil (nilai kembali dari printf())'. C memperlakukan orang-orang yang sama. Hal ini juga memungkinkan untuk kode seperti (void) i;di mana iadalah parameter ke fungsi yang Anda gunakan voiduntuk menandainya sebagai sengaja tidak digunakan
printf()memang memiliki efek, bahkan jika Anda mengabaikan nilai itu akhirnya kembali. Sebaliknya 5;tidak memiliki efek sama sekali.