错误:函数参数太少?

时间:2018-08-21 13:31:09

标签: c

我在代码的另一部分做了完全相同的事情,没有错误或工作方式有任何问题,但是在这一部分,所以给了我一个错误。 函数是;

void triangle(int height,int base)
{
   printf("Enter the base of the triangle:");
   scanf("%d",&base);
   printf("\nEnter the height of the triangle:");
   scanf("%d",&height);
   int area;
   area = (height*base)/2;
   printf("\nTriangles area is %d.",area);
}

我在代码中使用了一个开关大小写函数,这就是我在主函数中调用它的方式;

case 3:
     {
         triangle(area);
     }

感觉很奇怪,但是效果很好;

void square(int length)
{
printf("Enter the length of square:");
scanf("%d",&length);
int area;
area = length*length;
printf("\nRectangles area is %d.",area);
}

喜欢这个

case 1:
        {
            square(area);
        }

1 个答案:

答案 0 :(得分:0)

  

我在另一部分代码中做的完全相同,没有错误或   它的工作方式有任何问题,但是在这一部分,所以它给了   我一个错误。

C不能保证在编译时或运行时都不能诊断出所有不正确的代码。但是,您应该提高编译器的警告级别。如果此后它在任何地方都接受了您的triangle()函数的调用,而不仅仅是两个参数,并且没有发出至少某种警告,则将其丢弃并选择一个更好的警告。

  

函数就是;

void triangle(int height,int base)
{
   printf("Enter the base of the triangle:");
   scanf("%d",&base);
   printf("\nEnter the height of the triangle:");
   scanf("%d",&height);
   int area;
   area = (height*base)/2;
   printf("\nTriangles area is %d.",area);
}

请注意,即使您使用正确数量的参数调用函数,您的函数实际上并未将调用者提供的值用于任何一个参数,也不以任何方式将任何信息返回给其调用者。如果那是您想要的,那么最好将其声明为接受 no 参数,并以这种方式进行调用:

void triangle(void) {
    int length;
    int height;
    // ...

请注意,lengthheight现在严格来说是局部变量。您将这种变化称为:

triangle();