c - 函数没有返回类型?

标签 c int return-value return-type

在程序中,我没有提到函数 fullon 的返回类型,但代码仍然运行并打印 output: "7" 。即使我没有提到任何返回类型,它是如何工作的?我在这个网站上搜索过,但找不到任何合适的答案。我还是一个初学者,所以我没有太多的 C 背景。

  #include<stdio.h>
  fullon(int);

int main()
 {

   int b;
   int x = 5 ;
   b = fullon(x);

   printf("%d" , b);
  }

fullon(int y)
    {

      return y+2;

    }

更新1:

#include<stdio.h>
fullon(float);

int main()
 {

float b;
int x = 5 ;
float f = 3.5;
b = fullon(f);


printf("%f" , b);

        }
 fullon(float y)
    {

            return y;

                }

输出为 3.000000

最佳答案

早在 20 世纪 80 年代,准标准 C(有时称为 K&R C,其中 K&R 指的是 Kernighan 和 Ritchie 的名字,他们创建了该语言并编写了第一本 C 语言手册)允许像这样的函数声明:

noreturntype() 
{ 
//returns something the size of an int
/* do something */
return 456;
 }

因此,即使该函数没有返回类型,也允许在给定实现上返回与 int 具有相同字节数的任何内容。 (例如,如果 16 位机器有 16 位整数和 16 位指针,则允许在此类函数中返回 int 或指针。)

创建 C 标准时,保留了这些旧式声明,以便向后兼容现有程序。 (事实上​​,即使是现代编译器也倾向于接受旧式函数声明和警告)。

关于c - 函数没有返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34378395/

相关文章:

尝试访问传递给Solaris中函数的结构指针时的核心转储

ios - 如何在 Swift 中有效地将 Range Int 数组转换为 String 数组?

java - 逐位比较两个 4 位整数

java - java中如何将一个函数的返回值接收到另一个函数中

c - x86-64 程序集 "cmovge"到 C 代码

c - 无法在带顺序模式下写入像素 block

c - 将 token 存储到数组中

c - 如何打印分数

c++ - 模板化 BST 方法的返回值问题

c - 我不明白这个 (size_t)length 返回语句