Function without return type specified in C

后端 未结 3 647
情深已故
情深已故 2020-11-30 10:38

I came across this piece of code in C:

#include 
main( )
{
 int i = 5;
 workover(i);
 printf(\"%d\",i);
}
workover(i)
int i;
{
 i = i*i;
 retu         


        
3条回答
  •  误落风尘
    2020-11-30 11:31

    When I compile your code as $ gcc common.c -o common.exe -Wall (Trying it over Cygwin Terminal as I don't have my linux system with me right now)

    I get following warnings:

    common.c:3:1: warning: return type defaults to ‘int’ [-Wreturn-type]
    main( )
    ^
    common.c: In function ‘main’:
    common.c:6:2: warning: implicit declaration of function ‘workover’ [-Wimplicit-f                  unction-declaration]
    workover(i);
    ^
    common.c: At top level:
    common.c:9:1: warning: return type defaults to ‘int’ [-Wreturn-type]
    workover(i)
    ^
    common.c: In function ‘main’:
    common.c:8:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
    
    1. The first and the third one says, return type defaults to ‘int’ which means that if you don't specify a return type, compiler will implicitly declare it as int.
    2. The second one says, implicit declaration of function ‘workover’ since the compiler doesn't know what workover is.
    3. Third warning is pretty simple to understand and will disappear if you fix the first one.

    You should do it this way:

    #include 
    
    int workover(int);
    
    int i;
    
    int main(void)
    {
        int i = 5;
        workover(i);
        printf("%d",i);     //prints 5
        return 0;
    }
    
    int workover(int i)
    {
        i = i*i;    //i will have local scope, so after this execution i will be 25;
        return(i);  //returns 25
    }
    

提交回复
热议问题