【发布时间】:2016-08-02 16:19:57
【问题描述】:
注意:我在代码块 IDE 上使用 windows 7 和 gcc 编译器。
我发现所有形式的退货 如果返回类型可以使用语句 函数无效
例如:
void message() //If i skip this declaration still it works
main()
{
message();
}
void message()
{
return 5; //also return 5.0 and return a(some variable) also works
}
既然void 指的是“什么都不返回”,那么我们如何在这里使用return 语句。这是否意味着所有程序都返回一些东西,无论它是 void 还是其他返回类型?
我还有一个关于 void 作为返回类型的查询:
如果我使用这个程序
main()
{
printf("%d",message());
}
void message()
{
}
输出为 1,
并且不报错
但是如果我使用这个会出错:
void message(); //when I use the declaration
main()
{
printf("%d",message());
}
void message()
{
}
为什么会这样?
【问题讨论】:
-
你是如何编译你的代码的,你的编译器有没有发出一些警告?
-
this 应该很有用,尽管它可能不会直接回答您的第一个问题。你越早熟悉 UB 的概念,对你越好,IMO。
-
您的代码有未定义的行为。这正是未定义行为的未定义程度。
标签: c function return void c89