Ca intitulat.
void foo() {}
int main(void) {
foo(); // what is the value of this expression?
}
Înseamnă că void
este, de asemenea, un tip de valoare în C? Sau cum să înțeleg asta?
Ca intitulat.
void foo() {}
int main(void) {
foo(); // what is the value of this expression?
}
Înseamnă că void
este, de asemenea, un tip de valoare în C? Sau cum să înțeleg asta?
Un gol de exprimare nu are nici o valoare, și, de fapt, nu poate fi folosit. Acest lucru este descris în detaliu în secțiunea 6.3.2.2 de C standard:
A (inexistente) valoare de un gol exprimare (o expresie care are tip
void
) nu vor fi folosite, în orice mod, și implicit sau conversii explicite (cu excepțiavoid
) nu se aplică o astfel de expresie. Dacă o expresie de orice alt tip este evaluată ca un gol exprimare, de valoarea acesteia sau indicativul este aruncată. (Un gol expresia este evaluată pentru efecte secundare.)
Ei bine, da și nu. Nu, void este un tip care nu are nici o valoare. Așa cum sugerează și numele, reprezintă absența de tip într-o expresie. Dar da, pentru că reprezintă absența unui tip presupune că are valoare. Și această valoare este pur și simplu de a reprezenta nimic într-o limbă care necesită capacitatea de a distinge diferite tipuri de date.