为什么我的代码有效?我在声明它之前调用函数generateNumber,并且我没有在文件的开头设置原型,所以通常它不应该工作,是吗?
这是我的代码:
#include#include #include int main(int argc, const char * argv[]) { int max = 100; int min = 1; int mysteryNumber = generateNumber(min, max); int enteredNumber = min-1; do{ printf("Enter a number !\n"); scanf("%d", &enteredNumber); if (enteredNumber > mysteryNumber) { printf("It's less !"); }else if(enteredNumber < mysteryNumber){ printf("It's more !"); } }while (enteredNumber != mysteryNumber); printf("Congratulations, the mystery number was %d \n", mysteryNumber); return 0; } int generateNumber(int min, int max){ srand(time(NULL)); return (rand() % (max - min + 1)) + min; }
谢谢提前!
令人惊讶的是,这是实际应该与旧编译器一起使用的极少数情况之一- 特别是在C99之前的编译器.不过,你不应该这样做:int
在C99中删除了隐式,因为它使代码变得脆弱.
当一个函数缺少原型时,旧的C编译器常常假设它的所有参数都与你传递的表达式类型相匹配,并且它们的返回类型是int
.您的函数恰好符合此描述:您传递两个整数,并将返回值视为int
.