c - 没有定义函数参数类型默认为int?我疯了吗?

标签 c function standards

出于某种奇怪的原因,我用另一种不使用类型的语言复制了一个示例,并且忘记将一个添加到函数定义参数中,但它起作用了。

#include <stdio.h>

char toChar(n) {
  //sizeof n is 4 on my 32 bit system
  const char *alpha = "0123456789ABCDEF";
  return alpha[n];
}

int main() {
  putchar(toChar(15)); //i.e.
  return 0;
}

我确信某些标准的大多数编译器都将 main 默认为 int (但仅返回),对于其他函数来说这也是正确的行为还是这个实现已定义?看起来很不寻常,我的编译器只是一个稍微过时的 GCC 端口(MinGW)。

最佳答案

K&R 风格的函数声明:

void foo(n) 
    int n; 
{

}

如果没有指定类型,则默认为 int。这在 C89 中有效,在 C99 中无效

关于c - 没有定义函数参数类型默认为int?我疯了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38179247/

相关文章:

sql - 具有新功能的 Asterisk

c++ - 如何在 C++ 中的同一函数中使用字符串和 double

html - 目前让网站图标在所有支持网站图标的浏览器中显示的最佳方法是什么?

c - gcc 堆栈优化?

c++ - FindWindowA() 返回 0,当我使用 GetLastError() 检查错误代码时,它也是 0 (ERROR_SUCCESS)

c++ - 什么时候在网络编程中使用ntohs函数?

c - 空函数C递归

jpeg - 在哪里可以获得JPEG/JFIF/EXIF/etc的免费规范?

android - Android中ID命名约定的最佳实践?

c - 为什么 portaudio 会突然返回回调?