首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么下面的代码在其参数之一没有与其关联的数据类型时产生错误?

为什么下面的代码在其参数之一没有与其关联的数据类型时产生错误?
EN

Stack Overflow用户
提问于 2015-08-11 17:17:23
回答 1查看 55关注 0票数 0

案例A:

代码语言:javascript
复制
  ‪#‎include‬<stdio.h> 

  int divide( int a, b) 
  { return 7; }

  int main() { 
    int a=divide(8,3); 
    printf("%d",a);
    return 0; 
  } 

案例B:

代码语言:javascript
复制
#include<stdio.h> 
int divide( a, b) 
{ 
  return 7; 
}

int main() 
{ 
  int a=divide(8,3);
  printf("%d",a); 
  return 0; 
} 

为什么案例A是错误,而案例B是无错误的?

根据C99标准,如果B假设变量为int类型,那么为什么在A种情况下不是,为什么b的类型不被认为是int类型

EN

回答 1

Stack Overflow用户

发布于 2015-08-11 18:38:42

看起来,您将旧样式参数列表与新样式参数列表混合在一起。旧样式仅为“int”假定的名称,新样式为类型和名称。对于每一个额外的名称或类型名称,一个逗号,类型和参数如下。

此外,对于旧样式,参数类型的函数中应该有声明,因为它们没有在参数列表中指定。

这与函数中使用逗号分隔同一类型的多个变量的变量不同,函数的参数列表使用逗号分隔参数列表,每个参数都应该是新样式的类型和名称。

例:

代码语言:javascript
复制
int func(char arg1, long arg2, long arg3) {
  char a,b,c=2,d;
  long xPos,yPos;
  ...
}

与:

代码语言:javascript
复制
int func(arg1, arg2, arg3) {
  int arg1,arg2,arg3;
  char a,b,c=2,d;
  long xPos,yPos;
  ...
}

另见C function syntax, parameter types declared after parameter list

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31948047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档