在C中使用过程

1 c

#include <stdio.h>

double IncomeTAX(double i)
{
    double tax;

    if(i <= 120000)        
        tax = 0;    
    else        
        tax = (i - 120000) * 15/100;    

    return tax;
}


int main(void)
{    
    double a, b;

    printf  ("Enter the annual income: ");
    scanf   ("%lf", &b);

    a = IncomeTAX(b);

    printf ("Income Tax is %.2lf\n", a);    
}
Run Code Online (Sandbox Code Playgroud)

当我尝试以这种方式运行程序时它可以工作,但是当我分离程序时,程序编译但是给出了垃圾值.但是,如果我将过程中的数据类型从"double"更改为"long",即使该过程是单独编译的,该程序仍然有效.

谁能告诉我这背后的原因是什么?

unw*_*ind 5

如果通过"单独的过程"来表示"将IncomeTAX()函数放在不同的源代码文件中",那么您可能在使用前未能声明它.把它放在之前main():

extern double IncomeTAX(double);
Run Code Online (Sandbox Code Playgroud)

通常这将存在于IncomeTAX.h头文件中.

你需要这个声明的原因是否则C将默认使用int; 这会导致问题,因为它的大小可能不同double.

  • C中的功能默认情况下具有外部链接,除非它们被指定为静态. (4认同)