编译错误:控制到达非void函数的结尾

时间:2016-12-21 21:26:09

标签: c compiler-errors

我有这个代码,编译器给了我下一个错误:

  

functions.c:12:1:警告:控制到达非void函数的结尾        [-Wreturn型]   }

代码:

#include <stdlib.h>
#include <time.h>

int myrand(){

    srand(time(NULL));
    int r = rand()%2;

}

此函数从另一个.c文件调用:

printf("%d here \n", myrand());

2 个答案:

答案 0 :(得分:0)

添加一个return语句。

int myrand(){

    srand(time(NULL));
    int r = rand()%2;
    return r;
}

没有它,&#34;随机&#34;您打印的值不是来自rand(),而是来自省略return语句的未定义行为。 [嗯,从技术上讲,取决于架构,rand的返回值可以在寄存器中传播]

虽然标准可能允许在不要求硬错误的情况下省略它,但这仍然是不明智的。

答案 1 :(得分:0)

我经过多次研究和阅读手册后发现了错误,结果控制到了无效功能的终点。

int myrand(){

    srand(time(NULL));
    int r = rand()%2;
    return r; // add this
}