C函数在不指定参数数据类型的情况下工作

标签 c mpi

我错误地在 MPI 中使用了以下函数 -

double f(x) {
  return(4.0/(1 + x*x));
}

请注意,我没有在上面的代码中声明x的数据类型。

然后编译它使用:

mpicc q.c -o q

程序仍然没有抛出错误并成功编译。

并且在使用包装器时,我得到了 f 的以下值 -

f(2) = 0.8

f(1) = 2

这是如何无误地工作的?

最佳答案

在旧式 C 中,任何使用名称声明但没有类型变量的类型都具有 int 类型。所以函数将采用整数参数,并且在表达式中它将被提升为 double 。

更新

在 C 的准标准版本和第一个标准版本 C89 中,没有类型声明的变量默认为 int 类型。这种行为在 C99 和后续标准中被删除。人们可以在 Kernigan&Ritchie 的书中读到它 C Programming Language, 2nd Edition .

关于C函数在不指定参数数据类型的情况下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47208101/

相关文章:

c - 给指针赋值?

c - C 的指针错误

c - 如何将 FILE** 变量设置为标准输出?

parallel-processing - MPI Fortran WTIME 运行不正常

c - 如何用 C 语言编写精确的 1MB 数组?

c - 如何导出使用 CryptoAPI 派生的 AES key

c - Arduino 代码中未读取字节

MPI 接收/收集动态矢量长度

c++ - BSP 和 MPI 有什么区别?

c - 使用 MPI 优雅退出