C中的void函数返回什么?

Pan*_*ato 3 c function

#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.这里发生了什么?

sep*_*p2k 7

一个void函数不返回任何东西.您的程序调用未定义的行为,因为它隐式定义m为具有返回类型int(在C89中,如果在声明函数之前调用它,则隐式假定它具有返回类型int),但随后使用返回类型定义它void.

如果你添加一个forward-declaration m,编译器会正确地抱怨你正在尝试使用void函数的返回值,这是不可能的.

  • 实际发生的事情(尽管不保证一致性)是`main`获得了'printf`留下的返回值(因为它打印了5个字符,所以为5). (4认同)