2016-11-12 4 views
1

Je reçois un avertissement Dans la fonction 'sleep': avertissement: le type de 'numRest' par défaut à 'int' et je ne sais pas pourquoi . Cela fonctionne parfaitement bien mais apparemment j'ai reçu cet avertissement. Est-ce que quelqu'un d'autre reçoit cet avertissement quand il l'exécute?Attention: le type de 'numRest' par défaut à 'int' (dans la fonction '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; 
} 

Répondre

3

Le problème est lié à la définition de la signature de fonction.

void sleep(numRest) { 

devrait être

void sleep(int numRest) { 

Sinon, le compilateur "supposer" (désormais obsolète par dernière norme) que le type de données manquant est int.

connexes, citant C11, des changements majeurs (par rapport aux versions précédentes) Liste

  • supprimer implicite int

Cela dit,

  • sleep() est un library function already, prototypé en unistd.h, ne pas essayer d'utiliser le même pour les fonctions définies par l'utilisateur.
  • int main() doit être int main(void), au moins pour les environnements hébergés pour se conformer à la norme.
+0

Oh wow j'ai complètement raté que je vous remercie –

1

Vous devez mettre explicitement le type de variable dans la déclaration de fonction:

void sleep(int numRest) { 

//your code here 

}