Zgodnie z oczekiwaniami.
void foo() {}
int main(void) {
foo(); // what is the value of this expression?
}
Czy to oznacza, że void
jest również typem wartości w C? Lub jak mam to rozumieć?
Zgodnie z oczekiwaniami.
void foo() {}
int main(void) {
foo(); // what is the value of this expression?
}
Czy to oznacza, że void
jest również typem wartości w C? Lub jak mam to rozumieć?
Wyrażenie void nie ma znaczenia i właściwie nie może być używany. Jest to szczegółowo opisane w dziale 6.3.2.2 standardu C:
(Nieistniejące) wartość wyrażenia void (wyrażenie, mająca typ
void
) nie powinny być wykorzystywane w jakikolwiek sposób, a także niejawne lub konwersje jawne (za wyjątkiemvoid
) nie powinno być stosowane do do takiej wypowiedzi. Jeśli wyrażenie innego typu szacuje się jako puste wyrażenie, jego wartość lub oznaczenie wyrzucić. ( Wyrażenie void szacuje się na przedmiot jego skutków ubocznych.)
No i tak, i nie. Nie, void-to typ, który nie ma znaczenia. Jak sama nazwa wskazuje, oznacza to brak typu w wyrażeniu. Ale tak, dlatego, że występ na brak typu oznacza, że ma wartość. I to jest wartość polega na tym, aby po prostu nic nie stanowić w języku, który wymaga zdolności odróżnić różne typy danych.