Každý výraz v C mít hodnotu? Jak se o volání funkce void jako výsledek? [duplicitní]

0

Otázka

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?

c
2021-11-24 03:26:57
2

Nejlepší odpověď

1

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 pro void) 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.)

2021-11-24 03:40:26
-1

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.

2021-11-24 03:41:15

Myslíš, že výrok "každý výraz v C má hodnotu" je správná?
Becavalier

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................