Bu soru safsa özür dilerim. Aşağıdaki programı düşünün:
#include <stdio.h>
int main() {
int i = 1;
i = i + 2;
5;
i;
printf("i: %d\n", i);
}
Yukarıdaki örnekte, ifadeler 5;ve i;gereksiz görünüyor, ancak kod varsayılan olarak uyarı veya hata olmadan derler (ancak, gcc warning: statement with no effect [-Wunused-value]ile çalıştırıldığında bir uyarı verir -Wall). Programın geri kalanı üzerinde hiçbir etkisi yoktur, neden ilk etapta geçerli ifadeler olarak kabul edilirler? Derleyici onları görmezden geliyor mu? Bu tür ifadelere izin vermenin herhangi bir faydası var mı?
;. İfadelerin ne zaman ifade edilemediğine ilişkin daha fazla kural eklemek dili zorlaştırır
printf()mısınız? İfadesi 5;temelde "ne gerekiyorsa diyor 5(hiçbir şey) yapar ve sonucu görmezden. İfadende printf(...)olan 'ne gerekiyorsa printf(...)yapar ve sonuçlar göz ardı (dönüş değeri printf())'. C aynı olanlar davranır. Bu aynı zamanda gibi kod için izin verir (void) i;nerede iolduğunu voidkasten kullanılmayan olarak işaretlemek için kullandığınız bir işleve parametre
printf()sonunda döndürdüğü değeri görmezden gelseniz bile, çağırmanın bir etkisi var. Aksine 5;hiçbir etkisi yoktur.