2016-11-12 72 views
1

我得到一個警告在函數'sleep'中:warning:'numRest'的類型默認爲'int',我不知道爲什麼。它運行得很好,但顯然我得到了這個警告。其他人在運行時是否會收到此警告?警告:'numRest'的類型默認爲'int'(在函數'sleep'中)

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; 
} 

回答

3

問題出在函數簽名定義。

void sleep(numRest) { 

應該

void sleep(int numRest) { 

否則,編譯器將 「假設」(現在已經過時的最新標準),失蹤的數據類型爲int

相關,從C11報價,主要的變化(在以前的版本)列表

  • 刪除隱int

這就是說,

  • sleep()library function already,原型在unistd.h,不要嘗試使用相同的用於用戶定義的函數。
  • int main()應該是int main(void),至少對於託管環境要符合標準。
+0

哇我完全錯過了謝謝 –

1

你必須明確提出的變量類型的函數聲明爲:

void sleep(int numRest) { 

//your code here 

} 
相關問題