Jako názvem.
void foo() {}
int main(void) {
foo(); // what is the value of this expression?
}
To znamená, že void
je také typ hodnoty v C? Nebo jak to mám pochopit?
Jako názvem.
void foo() {}
int main(void) {
foo(); // what is the value of this expression?
}
To znamená, že void
je také typ hodnoty v C? Nebo jak to mám pochopit?
Za neplatné výraz nemá žádnou hodnotu, a ve skutečnosti nemůže být použit. To je podrobně popsáno v kapitole 6.3.2.2 z C standard:
(Neexistující) hodnota neplatný výraz (výraz, který má typ
void
) nesmí být použit v žádném případě, a implicitní nebo explicitní převody (s výjimkou provoid
) nesmí být aplikován na takový výraz. Pokud je výraz jiného typu je vyhodnocen jako void výraz, jeho hodnota, nebo označení, je zlikvidován. (Void výraz je vyhodnocen pro jeho vedlejší účinky.)
No, ano a ne. Ne, void je typ, který nemá žádnou hodnotu. Stejně jako název napovídá, představuje absence typ ve výrazu. Ale ano, protože představuje absence typu, vyplývá, že to má hodnotu. A tato hodnota je jednoduše představují nic v jazyce, který vyžaduje schopnost rozlišovat různé typy dat.