#include <stdio.h>
void main()
{
int k = m();
printf("%d", k);
}
void m()
{
printf("hello");
}
Run Code Online (Sandbox Code Playgroud)
产量
hello5
返回此处的void函数是什么?如果没有printf()则输出为1.这里发生了什么?
一个void函数不返回任何东西.您的程序调用未定义的行为,因为它隐式定义m为具有返回类型int(在C89中,如果在声明函数之前调用它,则隐式假定它具有返回类型int),但随后使用返回类型定义它void.
如果你添加一个forward-declaration m,编译器会正确地抱怨你正在尝试使用void函数的返回值,这是不可能的.