案例A:
#include<stdio.h>
int divide( int a, b)
{ return 7; }
int main() {
int a=divide(8,3);
printf("%d",a);
return 0;
} 案例B:
#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类型
发布于 2015-08-11 18:38:42
看起来,您将旧样式参数列表与新样式参数列表混合在一起。旧样式仅为“int”假定的名称,新样式为类型和名称。对于每一个额外的名称或类型名称,一个逗号,类型和参数如下。
此外,对于旧样式,参数类型的函数中应该有声明,因为它们没有在参数列表中指定。
这与函数中使用逗号分隔同一类型的多个变量的变量不同,函数的参数列表使用逗号分隔参数列表,每个参数都应该是新样式的类型和名称。
例:
int func(char arg1, long arg2, long arg3) {
char a,b,c=2,d;
long xPos,yPos;
...
}与:
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
https://stackoverflow.com/questions/31948047
复制相似问题