我有此代码,并且编译器给我下一个错误:
functions.c:12:1:警告:控制达到非空隙函数的末端 [-wreturn-type] }
代码:
#include <stdlib.h>
#include <time.h>
int myrand(){
srand(time(NULL));
int r = rand()%2;
}
此功能是从另一个.c文件调用的:
printf("%d here n", myrand());
我在大量研究和通过手册进行阅读后发现了该错误,事实证明控制达到了非流动功能的末端。
int myrand(){
srand(time(NULL));
int r = rand()%2;
return r; // add this
}
添加返回语句。
int myrand(){
srand(time(NULL));
int r = rand()%2;
return r;
}
没有它,您打印的"随机"值不是来自rand()
,而是来自省略返回语句的未定义行为。[嗯,从技术上讲,根据体系结构,可以在寄存器中传播rand
的返回值]
虽然C标准可以允许不需要硬错误而省略它,但仍然不明智。