Как и положено.
void foo() {}
int main(void) {
foo(); // what is the value of this expression?
}
Означает ли это, что void
также является типом значения в C? Или как я должен это понимать?
Как и положено.
void foo() {}
int main(void) {
foo(); // what is the value of this expression?
}
Означает ли это, что void
также является типом значения в C? Или как я должен это понимать?
Выражение void не имеет значения и фактически не может быть использовано. Это подробно описано в разделе 6.3.2.2 стандарта C:
(Несуществующее) значение выражения void (выражение, имеющее тип
void
) не должны использоваться каким-либо образом, а также неявные или явные преобразования (за исключениемvoid
) не должно применяться к такому выражению. Если выражение любого другого типа оценивается как пустое выражение, его значение или обозначение отбрасывается. ( Выражение void оценивается на предмет его побочных эффектов.)
Ну, и да, и нет. Нет, void-это тип, который не имеет значения. Как и следует из названия, это означает отсутствие типа в выражении. Но да, потому что представление отсутствия типа подразумевает, что он имеет значение. И это значение состоит в том, чтобы просто ничего не представлять на языке, который требует способности различать различные типы данных.