Control reaches end of non-void function -wreturn-type

rinraven404 -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
alors voila je suis débutante en langage c et quand je veut compiler le programme ça me met ce message: control reaches end of non-void function -wreturn-type.
Il me dise que ça vient de cette endroit:

if(age >8 || <18)

pourriez vous me dire quelle est mon erreur svp car j'ai beau chercher je ne trouve pas.
merci d'avance.

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Il faudrait écrire : if(age > 8 || age <18), mais attention car ce test sera toujours vrai !La confiance n'exclut pas le contrôle
    1
  2. L1Student
     
    if ((age >8) || (age <18)) (les parenthèses sont pas obligées, mais je préfère perso)
    Je me trompe peut être, mais cette erreur viens du fait que if est une fonction "booléenne" qui renvoie un nombre si le test est vrai (probablement 1) et un autre nombre si le test est faux (probablement 0)

    L'appel du test étant erroné, la fonction ne retournait rien
    1
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      L'erreur est surtout qu'il n'y a rien entre le || et le < ce qui signifie qu'on compare 18 avec... rien !

      if(age >8 || <18)
                ^^^^^  
      0
  3. rinraven404
     
    ca ne m'affiche plus le message d'erreur mais le printf s'affiche quand mm et pourtant j'ecrit 20! comment faire svp et merci de m'avoir rep.
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      KX t'a bien expliqué que ce test était toujours vrai.
      Explication : if(age > 8 || age <18)
      Tu mets 20; 20 est supérieur à 8. Donc on rentre dans le if.
      A mon avis, tu voulais plutôt mettre : if(age>8 && age<18)
      0