我在函数'sleep'中收到警告:警告:'numRest'的类型默认为'int',我不明白为什么。它运行得非常好,但显然我得到了这个警告。有没有其他人在运行时收到此警告?
void sleep(numRest){
if ((numRest >= 0) && (numRest <=4)){
printf("Sleep deprived!");
}
else if ((numRest > 4) && (numRest < 6)){
printf("You need more sleep.");
}
else if ((numRest >= 6) && (numRest < 8)){
printf("Not quite enough.");
}
else{
printf("Well done!");
}
return;
}
int main()
{
int numSleep = -1;
if (numSleep == -1){
printf("Test 1\n");
printf("Input: -1\n");
printf("Expected Result: Error, you cannot have a negative number of hours of sleep.\n");
printf("Actual Result: ");
sleep(numSleep);
printf("\n\n");
numSleep = 4.5;
printf("Test 2\n");
printf("Input: 4.5\n");
printf("Expected Result: You need more sleep.\n");
printf("Actual Result: ");
sleep(numSleep);
printf("\n\n");
}
return 0;
}
答案 0 :(得分:3)
问题在于函数签名定义。
void sleep(numRest) {
应该是
void sleep(int numRest) {
否则,编译器将&#34;假设&#34; (现在已被最新标准淘汰)缺少的数据类型为int
。
相关,引用C11
,主要更改(超过先前版本)列表
- 删除隐式
int
那就是说,
sleep()
是library function already,原型为unistd.h
,不尝试将其用于用户定义的功能。int main()
应为int main(void)
,至少在托管环境中符合标准。答案 1 :(得分:1)
您必须在函数声明中明确地将变量类型放在:
void sleep(int numRest) {
//your code here
}